Verständnisfrage zu fork()

16/04/2013 - 12:57 von Heinz-Mario Frühbeis | Report spam
Hallo zusammen!

main >
#include "ida.h"
int main(){
IDA m_IDA("Hallo", mLzStat);
return mLzStat;
}

ida.h >
IDA::IDA(std::string vOwner, int &vLzStat){
std::cout<<"Hallo"; //Hier wird "Hallo" zweimal ausgegeben [1]
std::cout.flush();
RunIDA("Name");
}

pid_t IDA::RunIDA(std::string vName){
pid_t nPID, nRetPID;
structIDAReg nStruct;
switch(nPID = fork()){
case -1 :
break;
case 0:
nRetPID = getpid();
break;
default:
if (waitpid (nPID_IDABase, NULL, 0) != nPID_IDABase) {
return getpid();
}
}
return getpid();
}

[1] Hier verstehe ich nicht wieso zweimal "Hallo" ausgegeben wird.
Wenn ich aber in IDA::IDA() noch eine weitere Funktion aufrufe eines
anderen Headers und in dieser Funktion ein std::cout eintrage, dann wird
dort nur einmal das std::cout ausgegeben.

Wird denn tatsàchlich der Konstruktor von IDA zweimal aufgerufen, was
aber eigentlich nicht kann, denn sonst müßte ja auch in einer anderen
Funktion eines anderen Headers zweimal eine Ausgabe erfolgen?

Meine Frage: Wieso ist das so?
Und wie handelt man das am Besten?
Muss man dann quasi seperieren nach pid_t, oder wie?

Ich hoffe, das ihr mich da auf den richtigen Weg bringen könnt.

Mit Gruß
Heinz-Mario Frühbeis
 

Lesen sie die antworten

#1 Heinrich Wolf
16/04/2013 - 16:16 | Warnen spam
Das ist aber nicht der gesamte Code.
Wie ist die Klasse IDA aufgebaut?

Ähnliche fragen