2016-10-04 1 views
0

Also mache ich einige Systemprogrammierung in C. Ich stieß auf ein Problem.Wie sieht man den Stand eines Kindprozesses?

Ich fork() einen untergeordneten Prozess, und dann verwenden Sie pipe(), um eine Nachricht vom übergeordneten zum untergeordneten senden. Und das Kind empfängt die eingehende Nachricht von der Pipe. Ich möchte diese Nachricht auf dem Bildschirm des Kindes ausdrucken. Aber write (stdout, message, xxx) wird nicht funktionieren, weil es die Nachricht auf dem Bildschirm der Eltern drucken würde.

Also frage ich mich, was getan werden muss, um die Nachricht auf dem Bildschirm des Kindes zu drucken.

Danke.

+0

Sie benötigen um das Kind dazu zu bringen, in sein eigenes STDOUT zu schreiben. – user3344003

Antwort

0

Dont Verwendung write (stdout .....

etwas wie unten versuchen. Die Nachricht von Rohr in „Child-Funktion“

void main(void) 
{ 
    pid_t pid; 

    pid = fork(); 
    if (pid == 0) 
      ChildProcess(); 
    else 
      ParentProcess(); 
} 

void ChildProcess(void) 
{ 
    int i; 


    printf(" *** Message recieved from parent pipe ***\n"); 
} 

Dies ist Konzept dahinter, wenn Sie den Haupt empfangenen Druck Programm führt fork() aus, eine identische Kopie seines Adressraums, einschließlich des Programms und aller Daten, wird erstellt Systemaufruf() gibt die untergeordnete Prozess-ID an den übergeordneten Prozess zurück und gibt 0 an den untergeordneten Prozess zurück

Verwandte Themen