【发布时间】:2016-10-19 21:54:31
【问题描述】:
我得到以下代码:
main()
{
int i, rc;
for (i = 0; i<=1; i++)
{
if( (rc=fork()) == 0)
{
printf("Child %d executing\n",i);
} /*end if*/
} /*end for*/
}
printf("All children created\n");
我还得到了输出可能出现的可能排列的解决方案。
子 0 正在执行 |
孩子 1 正在执行 |孩子 1 所有孩子都创建了|
孩子 1 正在执行 |孩子 2 所有孩子都创建了|
孩子 1 正在执行 |大孩子 所有孩子都创建了|
创建的所有孩子 |家长
我知道这些输出是由每个进程创建的,但我无法跟踪它们以了解如何这些输出发生。我知道fork() 创建了一个进程,if (fork() == 0) 表示它是一个子进程,但如果有人可以帮助我了解 Child 0 执行 | 之外的答案来自哪里,谢谢。我相信|只是对当前正在运行的进程的描述。为什么child 1 可以创建“孙子”,而子 0 不能?
【问题讨论】:
-
请编辑您的问题,用明确的内容替换“可能发生的输出的可能排列”。确保清楚地解释它后面的引用块是什么。 (这是某种进程输出和标签的乱码,标签中的进程名称没有解释。)(另外,“Child 1 execution”只会输出两次。)见我的回答。
标签: c concurrency process fork scheduling