2010-11-25 18 views
2

ich für ein OS-Quiz studiere, und ich verstehe nicht, was Ausgabeif (fork()) fork()

if(fork()) 
    fork() 

produzieren wird. Kann jemand das erklären?

Ich verstand nicht, diese Zeile:

if(fork()) 

Edit:

Was ich mit "Output" gemeint ist, wie viele Prozesse da sein wird, wenn dieser Code ausgeführt wurde.

Sorry, ich bin ein bisschen schwindlig nach dem Studium.

+0

Das wird ... nichts ausgeben. Die Frage beinhaltet sicherlich einen printf oder etwas anderes, das nach den Gabeln ausgibt? – ysth

Antwort

10

Hier ist ein Tipp: if (fork()) des Schreibens if (fork() != 0) nur einen kurzen Weg.

+0

Danke ooooouuouu !!! <3 <3 <3 <3 <3 xD – faris

+4

Ich würde eher denken "if (x! = 0)" ist eine lange Art zu schreiben "if (x)". :) – Vovanium

+1

hehe question in quiz war: if (! Fork()) if (! Fork()) if (fork()) fork() hat die volle mark aus ihm <3 – faris

4

Vielleicht sind Sie am besten versuchen es nur, lesen Sie die documentation for fork, und dann, wenn es immer noch keinen Sinn ergibt, eine genauere Frage darüber, welchen Teil Sie nicht verstehen.

beginnen diese, indem Sie versuchen:

#include <stdio.h> 
#include <unistd.h> 
int main(int argc,char **argv){ 
    int x,y=0; 
    x = fork(); 
    if (x) y = fork(); 
    printf("x: %d, y: %d\n",x,y); 
    return 0; 
} 
2

Ich hatte ein ähnliches Problem wie Sie.

die Bedeutung von ::::::>if (fork())

if (fork() !=0), und wie Sie wissen:

  • fork(): 3 Werte annehmen kann!

  • fork() = 0 für Kind.

  • fork() < 0 Fehler.

  • fork() > 0 Elternteil.

So:

if (0 != O) ==> false (in diesem Fall, dass Sie zu tun haben, nicht die 2 fork())

if (-123 != 0) ==> True (ja Sie haben).

if (5 != 0) ==> wahr (ja, du hast).

gut wie

0

für Eltern

if (fork()) is 

als

ausgewertet
if(pid_of_child) 

und für Kindprozess wird bewertet, wie:

if(0) 

, dass es :)