【发布时间】:2010-03-22 16:12:15
【问题描述】:
在 C 的丛林中用叉子砍树时,我尝试重复并学习更高级的用法和选项。但愚蠢的是,我找到了一个应该非常简单的示例,因为我之前使用过叉子,甚至编写了一些代码,但是完全看不懂。
来了:
main() {
if (fork() == 0) {
if (fork() == 0) {
printf("3");
}
else if ((wait(NULL)) > 0) {
printf("2");
}
}
else {
if (fork() == 0) {
printf("1");
exit(0);
}
if (fork() == 0) {
printf("4");
}
}
printf("0");
return 0;
}
可能的解决方案是:
- 3201040
- 3104200
- 1040302
- 4321000
- 4030201
- 1403020
其中 2、5 和 6 是正确答案。
首先,输出中不应该有四个零吗? 第二......一个人是如何找到解决方案的?在纸上做了将近一个小时,我什至不明白为什么给定的解决方案比错误的解决方案更正确(nr3 除外,因为它不能以 2 结尾,因为后面必须跟着 0)。
谁能提供一些好的解释?
编辑:
发现这个here 看看 2009 年的 pdf。人们现在可以停止发布关于这是一项家庭作业的帖子并真正尝试提供帮助吗?如果没有,请找一些其他的话题来消磨你的时间。谢谢!
【问题讨论】: