2

我在一个进程中做了一个双叉(叉子,然后孩子再次叉子,我等待孩子,孙子由 init 处理),在孩子关闭后,我尝试从我在父母中打开的套接字读取前叉。每次运行程序时读取都会失败。

消息正在使用 sendto() 发送,它返回 ENOENT 错误代码。

这应该有效还是我[10]?

这是 fork 函数中的代码:

uint8_t
upgrade(
        char *server,
        char *file)
{
    pid_t pid1, pid2;

    int status;

    if ((pid1 = fork()) < 0)
    {
        /* Fork error */
        log("FAILED: First fork() failed");
    }
    else if (pid1 == 0)
    {
        /* First child */
        if ((pid2 = fork()) < 0)
        {
            /* Fork error */
            log("FAILED: Second fork() failed");

            exit(0);
        }
        else if (pid2 == 0)
        {
            /*
                        execl("/usr/sbin/system_upgrade",
                                    "system_upgrade", NULL);
             */
            exit(0);
        }
        else
        {
            /* Second parent ie. First child
             * Note: Exit cleanly so that second child
             * gets reparented to init, and we avoid a zombie process */

            exit(0);
        }
    }
    else
    {
        /* First parent, wait for first child to exit */
        if (waitpid (pid1, &status, 0) != pid1)   
        {
            log("FAILED: waitpid() failed");
        }

    } /* FORK */

    return OK;
}

编辑:删除额外的括号,固定缩进,再次将其标记为代码

4

0 回答 0