在下面的例子中,我创建了3个另一个进程,并且我还有1个主进程。总共有4个进程正在执行。我的问题是,我可以通过控制fork系统调用函数的返回值来检查哪个进程是父进程,哪个进程是子进程。但是,如何检测主进程的执行?主流程和父流程有什么区别?

#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
int main()
{
    int a =fork();
    int b =fork();


    if (a == 0)
        printf("Hello from Child(A)!\n");

    // parent process because return value non-zero.
    else
        printf("Hello from Parent(A)!\n");

    if (b == 0)
        printf("Hello from Child(B)!\n");

    // parent process because return value non-zero.
    else
        printf("Hello from Parent(B)!\n");


    return 0;
}

最佳答案

您的代码创建4个进程:
(a > 0) && (b > 0):原始流程
(a == 0) && (b > 0):原始进程的第一个子进程(子进程A)
(a > 0) && (b == 0):原始进程的第二个子进程(子进程B)
(a == 0) && (b == 0):子进程A(子进程AA)的第一个子进程
请记住,fork创建一个子进程,并在父进程中返回此子进程的pid,在子进程中返回0。

关于c - 父流程与主流程之间的区别以及如何检测主流程?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55258933/

10-13 04:11