【发布时间】:2012-04-27 06:26:34
【问题描述】:
我正在研究系统编程系统调用。我的作业中有一个代码块(如下所示)。这个问题问我要打印多少个 A、B 或 C。我的问题是if(pid == 0) 是什么意思?我猜if(pid == 0) 的意思是假的,所以我分析会打印 2 x A 和 2 x B。我写还是?第二个问题是pid2 = fork() 是否再次执行main?
int main()
{
int pid,pid2;
int i;
pid = fork();
printf("A\n");
if (pid == 0)
pid2=fork();
if (pid2)
printf("B\n");
printf("C\n");
return 0;
}
【问题讨论】:
-
pid == 0 表示当前进程是子进程。
-
@Aslan986 - 你不是说孩子吗?
-
因为
pid2最初有一个不确定的值,并且从未在原始父级中设置。原始父母可能会或可能不会打印“B”。假设你得到了ABCABCC,尽管顺序可能会有所不同,具体取决于哪些进程获得处理器时间。 -
如果你在负载很重的系统上运行它,它可能只会打印
AC!
标签: c++ c unix operating-system fork