Process Fork(),一个进程不';不要终止?

Process Fork(),一个进程不';不要终止?,process,fork,wait,Process,Fork,Wait,我从来没有得到过这个;我在做一个简单的程序:一个父进程,它创建子进程,然后终止;这是密码 #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)

我从来没有得到过这个;我在做一个简单的程序:一个父进程,它创建子进程,然后终止;这是密码

#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);
}
#包括
#包括
#包括
#包括
#包括
int子对象(pid\u t pid)
{
printf(“进程%d正在终止,\n”,pid);
退出(退出成功);
}
int main()
{
int i;
对于(i=0;i<2;i++){
如果(fork()==0)
child(getpid());
}
printf(“父,pid=%d终止\n”,getpid());
/*如果(等待(空)=-1)
佩罗(“等待”)*/
退出(退出成功);
}
当我运行时,所有进程都被打印出来,但有一个进程,我想父亲,但我不确定,并没有终止,因为终端是活动的(不显示$); 相反,若我插入带wait的注释行,程序运行正常;为什么会这样


如果查看屏幕截图中的最后一次运行,将终端提示打印到屏幕上后,您将看到“进程8429正在终止”

似乎发生的是您的“父”进程首先退出,然后您的shell输出提示。然后,在最后一种情况下,子进程(PID 8429)打印其输出,然后退出

因此它正在终止,但有时子进程直到父进程退出并且shell进程已经打印了提示之后才终止


当它执行此操作时,只需再次点击“enter”,您就会看到一个正确的shell提示。或者甚至输入一个命令,它应该正常运行。

如果查看屏幕截图中的最后一次运行,在终端提示打印到屏幕上后,您将看到“进程8429正在终止”

似乎发生的是您的“父”进程首先退出,然后您的shell输出提示。然后,在最后一种情况下,子进程(PID 8429)打印其输出,然后退出

因此它正在终止,但有时子进程直到父进程退出并且shell进程已经打印了提示之后才终止


当它执行此操作时,只需再次点击“enter”,您就会看到一个正确的shell提示。或者甚至输入一个命令,它应该可以正常运行。

你能发布你看到的终端输出吗?添加了它;正如你所见,有时它运行正常,有时一个进程无法终止..你能发布你看到的终端输出吗?添加了它;如您所见,有时它运行正常,有时一个进程无法终止。。