c - 代码执行在子进程中从哪里开始?

标签 c linux process fork

考虑代码:

#include <stdio.h>
#include <errno.h>
#include <sys/types.h>
#include <unistd.h>

/* main --- do the work */

int main(int argc, char **argv)
{
    pid_t child;

    if ((child = fork()) < 0) {
        fprintf(stderr, "%s: fork of child failed: %s\n",
            argv[0], strerror(errno));
        exit(1);
    } else if (child == 0) {
                    // do something in child
            }
    } else {
    // do something in parent
    }
}

我的问题是子进程从哪里开始执行代码,即先执行哪一行? 如果它执行整个代码,它还会创建自己的子进程,并且事情会继续发生,但肯定不会发生!!!

如果是在fork()命令之后开始的,那么一开始是怎么进入if语句的呢??

最佳答案

它在 fork 函数的返回中开始执行子进程。不在代码的开头。 fork在父进程中返回子进程的pid,在子进程中返回0。

关于c - 代码执行在子进程中从哪里开始?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10177572/

相关文章:

c - C中的多个终端进程

ios - 如何在 NETunnelProviderManager 中找出 IP 流量的源进程

c - 使用指针打印二维数组时出错

c - _AddressOfReturnAddress() 相当于 Clang/LLVM

linux - 关于 POSIX 线程上互斥锁的问题

process - 信号量 wait() 和 signal()

c - 如何使 Windows 控制台光标跳转到行尾的下一行

c - 如何在 C 中将字符串类型转换为整数并将其存储在整数数组中?

linux - 如何配置 sqlite3 模块以使用 Django 1.10?

php - 如何使用 PHP 正确备份 Magento 数据库