fork() 函数是如何工作的?
下面这段代码:
#include <stdio.h>
int main (int argc, char const *argv[])
{
printf("Hi\n");
int i;
for(i = 1; i < argc; i++)
{
printf("Argument %d is %s\n", i, argv[i]);
fork();
printf("Forked in for loop increment %d\n", i);
}
return 0;
}
给出以下输出
/a.out hello world 参数1是hello 在for循环增量1中分叉 参数2是world 在for循环增量2中分叉 在for循环增量1中分叉 参数2是world 在for循环增量2中分叉 在for循环增量2中分叉
通常情况下,fork()执行哪些代码?我想了解fork()的原理,而不仅仅是基于这个例子。我可以在命令行上有多个参数。
fork
不太奇怪(您可能想要创建一些 n 个工作进程),但是裸fork
(即子进程和父进程运行相同代码)非常罕见。大多数情况下,fork
只是为调用exec
做准备。 - Fred Foo