我是 C 新手,我发现了这段代码:
#include <sys/types.h>
#include <sys/wait.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#define DISPLAY \
"mypid[%3.3d] - ppid[%3.3d] - f1[%3.3d] - f2[%3.3d] - f3[%3.3d]\n"
main(void) {
int f1, f2, f3, mypid, ppid;
f1 = (int) fork();
sleep(1);
f2 = (int) fork();
sleep(2);
f3 = (int) fork();
sleep(3);
mypid=(int) getpid();
ppid=(int) getppid();
printf(DISPLAY, mypid, ppid, f1, f2, f3);
waitpid(-1,NULL,0);
waitpid(-1,NULL,0);
waitpid(-1,NULL,0);
exit (0);
}
任何人都可以帮助我,这段代码背后的实际逻辑是什么?我试图运行它几次,但我仍然不知道。
此代码的结果:
mypid[9341] - ppid[9339] - f1[000] - f2[9342] - f3[9344]
mypid[9346] - ppid[9342] - f1[000] - f2[000] - f3[000]
mypid[9339] - ppid[9220] - f1[9341] - f2[9343] - f3[9345]
mypid[9342] - ppid[9341] - f1[000] - f2[000] - f3[9346]
mypid[9344] - ppid[9341] - f1[000] - f2[9342] - f3[000]
mypid[9343] - ppid[9339] - f1[9341] - f2[000] - f3[9347]
mypid[9347] - ppid[9343] - f1[9341] - f2[000] - f3[000]
mypid[9345] - ppid[9339] - f1[9341] - f2[9343] - f3[000]