Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C fork()导致非确定性行为:子进程不';不执行_C_Unix_Gcc - Fatal编程技术网

C fork()导致非确定性行为:子进程不';不执行

C fork()导致非确定性行为:子进程不';不执行,c,unix,gcc,C,Unix,Gcc,我有一个非常简单的c程序: #包括 #包括 int main(int argc,char*argv[]){ int rc=fork(); if(rc

我有一个非常简单的
c
程序:

#包括
#包括
int main(int argc,char*argv[]){
int rc=fork();
if(rc<0){
//fork失败了
fprintf(stderr,“fork失败\n”);
}else if(rc==0){
printf(“嗨,我是孩子!%d\n”,(int)getpid());
fflush(stdout);
}否则{
printf(“嗨,我是%d\n”,rc)的父母;
fflush(stdout);
}
返回0;
}
由于某种原因,当我编译和运行这个程序时,有时两个print语句都会显示,但有时只有父进程会显示

为什么会这样?即使我不使用
wait()
,这两个进程仍然应该运行


使用gcc 7.5.0 ubuntu 18.04

是因为当父进程关闭时IDE停止侦听,或者shell将子进程留在后台

要查看任意printf顺序,请执行以下操作:

        int status;
        printf("hi, I'm the parent of %d\n", rc);
        fflush(stdout);
        waitpid(pid, &status, 0);

我看你的代码没有问题。你是如何运行这个程序的?如果这有什么区别的话,我正在使用Clion IDE。它不应该有什么区别。你是如何运行代码的?通过IDE?试着在终端内运行它,看看是否有任何变化。您正在运行一个过时的程序,或者遇到一些非常奇怪的编译器问题。