为什么流程之间没有切换

时间:2013-04-19 02:18:35

标签: c linux gcc process fork

我有以下程序

#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
main()
{
    pid_t pid, ppid;
    printf("Hello World1\n");
    pid=fork();
    if(pid==0)
    {

        printf("I am the child\n");
        printf("The PID of child is %d\n",getpid());
        printf("The PID of parent of child is %d\n",getppid());
    }
    else
    {
        while(1)
        {
        printf("I am the parent\n");
        printf("The PID of parent is %d\n",getpid());
        printf("The PID of parent of parent is %d\n",getppid());        

        }
    }
}

此程序的输出是父运行永久而不切换到子进程。在这种情况下,为什么没有切换到子进程?

1 个答案:

答案 0 :(得分:1)

理想情况下,父母应该等待孩子完成,以便正确地收集孩子的过程条目。

waitpid(pid, 0, 0);

看看孩子是否能够以无限循环运行。为grep运行程序和child

./a.out | grep child