考虑代码:
#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/