如果我们在 if 语句中调用 fork() 方法,生成的子进程是否进入 else 语句?
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/wait.h>
int main(void){
int c = rand() % 50;
if( c == 0 ){
int k = fork();
}
else{
printf("ELSE");
}
return 0;
}
fork() 执行后,子进程是否打印“ELSE”消息?
不。
子进程将发现自己在代码中与父进程在
fork()
. 父子状态的唯一区别是fork()
调用的返回值,在您的代码中分配给k
(这将在父进程中保存子进程的 PID,在子进程中它将为零)。如果fork()
发生这种情况,父母和孩子都不会达成printf()
声明。通常的做法
fork()
是