假设我们有这段代码:
int i;
for(i=0; i<3; i++){
fork();
}
printf("Hello");
我认为应该打印&#34;你好&#34; 4次。
答案 0 :(得分:2)
对于您创建的每个fork系统调用,您将创建当前进程的克隆。因此,您将调用fork函数3次,这将导致创建8个进程。计算结果为2³。
如果要打印消息“hello”4次,则需要将代码更改为:
int main()
{
int i;
for(i=0; i<2; i++){
fork();
}
printf("Hello\n\n");
}
请注意,您拥有的代码将创建僵尸子进程。
使用此代码,你可以创建你想要的进程,让我们说4并让父亲等待它的孩子。
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <signal.h>
int main(int argc, char *argv[])
{
int pid, i;
for(i=0; i<4; i++)
{
if ((pid = fork()) == -1) {
perror(argv[0]);
exit(1);
}
if (pid == 0) {
printf("\n\nHello\n\n");
exit(0);
} else {
wait(NULL);
}
}
}