# Include <unistd. h> <br/> # include <string> </P> <p> int main (INT argc, char * argv []) <br/>{ <br/> pid_t chid = 0; <br/> pid_t rebornid = 0; </P> <p> chid = fork (); // The child process returns 0, the parent process returns the child process ID, and the error returns-1 </P> <p> int I = 0; <br/> Int J = 0; </P> <p> If (chid! = 0) // parent process <br/>{< br/> I ++; <br/> printf ("[1] chid = % d I = % d J = % d/N", chid, I, j ); <br/> printf ("[1] rebornid = % d I = % d J = % d/N", rebornid, I, j ); <br/>}< br/> else if (chid = 0) // sub-process <br/>{< br/> I ++; <br/> rebornid = fork (); </P> <p> printf ("[2] chid = % d I = % d J = % d/N ", chid, I, j); <br/> printf ("[2] rebornid = % d I = % d J = % d/N", rebornid, I, j ); </P> <p> If (rebornid! = 0) // father <br/> {<br/> printf ("[3] chid = % d I = % d J = % d/N", chid, i, j); <br/> printf ("[3] rebornid = % d I = % d J = % d/N", rebornid, I, j ); <br/>}< br/> else if (rebornid = 0) // child <br/>{< br/> J ++; <br/> printf ("[3] chid = % d I = % d J = % d/N", chid, I, j ); <br/> printf ("[3] rebornid = % d I = % d J = % d/N", rebornid, I, j ); <br/>}< br/> else <br/> {<br/> exit (0 ); <br/>}</P> <p> return 0; <br/>}< br/>
Running result:
[Wyj @ cluster1 ayatest] $./fork
[1] chid = 8487 I = 1 J = 0
[1] rebornid = 0 I = 1 J = 0
[2] chid = 0 I = 1 J = 0
[2] rebornid = 0 I = 1 J = 0
[3] chid = 0 I = 1 j = 1
[3] rebornid = 0 I = 1 j = 1
[Wyj @ cluster1 ayatest] $ [2] chid = 0 I = 1 J = 0
[2] rebornid = 8488 I = 1 J = 0
[3] chid = 0 I = 1 J = 0
[3] rebornid = 8488 I = 1 J = 0
Random order