考虑代码:代码在哪里执行在子进程中启动?
#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
}
}
我的问题是从那里在子进程开始执行代码的作用,首先执行哪即线?? 如果它执行整个代码,它也会创建它自己的子进程,并且事情会持续发生,这并不是肯定会发生的!
如果叉()命令后开始,它是如何进去if语句在第一?
”哪一次不会发生!!!“所以为了清楚你已经运行了这个,它只分了一次? – 2012-04-16 16:03:50
好的:fork()调用返回**两次**:一次为父,一次为子。目前,父母和孩子在分叉的返回值上只有不同。 – wildplasser 2012-04-16 16:04:27