#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
int main()
{
//fork();
//printf("Hello World\n");
int i=fork();
// child process because return value zero
if (i == 0)
printf("Hello from Child! %d \n",i);
// parent process because return value non-zero.
if (i!=0)
printf("Hello from Parent! %d \n",i);
return 0;
}
当fork()创建两个进程时,为什么第一个输出给出两个打印输出,而其他输出只给出来自Parent Only的输出。
我期待两个输出打印在每个输出的情况下,因为存在两个进程。
谁能解释一下为什么?
产出1:
Hello from Parent! 600
Hello from Child! 0
产出2:
Hello from Parent! 8206
产出3:
Hello from Parent! 350
产出4:
Hello from Parent! 1098
为什么当fork()创建两个进程时,第一个输出给出两个打印输出,而其他的只给出来自父进程的单个输出。我期待在输出情况下有两个输出打印。
2条答案
按热度按时间8ftvxx2r1#
请确保子进程已成功终止。您可以运行其他代码以确保子进程在父进程之前终止。
编辑:请参阅此答案:How to kill child of fork?
suzh9iv82#
给定这个代码
如果
fork()
发生故障,它将生成您所看到的输出。此代码将告诉您 * 为什么 *
fork()
失败:另外,注意
fork()
返回pid_t
,而不是int
,它们不必相同。