【发布时间】:2017-07-23 15:46:18
【问题描述】:
我以前从未得到过这个;我正在做一个简单的程序:创建子进程的父进程,并在它终止后;这是代码
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
int child(pid_t pid)
{
printf("process %d is terminating\n",pid);
exit(EXIT_SUCCESS);
}
int main()
{
int i;
for(i = 0; i < 2; i++){
if(fork() == 0)
child(getpid());
}
printf("father, pid=%d terminated\n",getpid());
/*if(wait(NULL) == -1)
perror("wait");*/
exit(EXIT_SUCCESS);
}
当我运行时,打印所有进程,但一个进程,我认为是父亲,但我不确定,不会终止,因为终端处于活动状态(不出现 $); insted,如果我插入带有等待的注释行,程序运行正确;为什么这个?
【问题讨论】:
-
你能发布你看到的终端输出吗?
-
添加了它;如您所见,有时它运行正确,有时一个进程不会终止..