相关疑难解决方法(0)

fork()和wait()有两个子进程

我需要使用fork()和wait()函数来完成赋值.我们正在对非确定性行为进行建模,如果存在多个可能的转换,则需要fork()程序.

为了尝试解决fork和wait如何工作,我刚刚制作了一个简单的程序.我想现在我理解调用是如何工作的,并且如果程序只分支一次会很好,因为父进程可以使用单个子进程的退出状态来确定子进程是否达到接受状态.

从下面的代码中可以看出,我希望能够处理必须有多个子进程的情况.我的问题是你似乎只能使用_exit函数设置状态一次.因此,在我的示例中,父进程测试的退出状态显示第一个子进程在其退出状态时发出0,但没有关于第二个子进程的信息.

我试着简单地不是_exit() - 拒绝,但那个子进程会继续,实际上似乎有两个父进程.

对于华夫饼干感到抱歉,但如果有人能告诉我父进程如何获取有关多个子进程的状态信息,我将不胜感激,或者我很高兴父进程只能注意到来自子进程的接受状态,但在这种情况下,我将成功地需要退出具有拒绝状态的子进程.

我的测试代码如下:

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <errno.h>
#include <sys/wait.h>

int main(void)  {

    pid_t child_pid, wpid, pid;
    int status = 0;
    int i;

    int a[3] = {1, 2, 1};
    for(i = 1; i < 3; i++)  {
        printf("i = %d\n", i);
        pid = getpid();
        printf("pid after i = %d\n", pid);
        if((child_pid = fork()) == 0)  {
            printf("In child process\n");
            pid = getpid();
            printf("pid in child process is %d\n", pid);
            /* Is a …
Run Code Online (Sandbox Code Playgroud)

c unix fork wait

27
推荐指数
2
解决办法
13万
查看次数

标签 统计

c ×1

fork ×1

unix ×1

wait ×1