0
A
回答
0
叉从管线3,叉发生的位置处开始。
6
fork()通过复制调用进程来创建一个新进程。从
fork(2)
为[...]
: 新工艺,被称为孩子,是 一个确切的重复调用的过程中,被称为父,除了 以下几点它是完全重复的,它也会有相同的指令指针和堆栈。所以孩子会调用fork()
之后。现在,您可能会问,我如何确定当前的计划是孩子还是父母?查看返回值的手册页:
成功时,子进程的PID返回父, 和0的孩子返回。如果失败,则返回-1在 父,没有创建子进程,并errno设置为合适。
所以如果fork()
结果等于0
,你在孩子过程中,如果其大于0
你的父母是,如果它的下面0
你就麻烦了。
请注意,这意味着,每一个代码是独立的fork()
结果值,将在都的孩子和家长被执行。所以,如果你是例如创建与16级的进程池中,你应该做的:
for (int i = 0; i < 16; i++) {
pid_t pid = fork()
if (pid == 0) {
do_some_work();
exit(0);
} else if (pid < 0) {
// fork failed
do_some_error_handling();
}
}
如果你错过了exit(0)
,你会产卵2 16-1处理(在那里,只是用100代替16没有乐趣。)
0
当叉的回报,它在这两个父(返回子进程的PID)和(返回0)的孩子返回。执行继续从父母和孩子那里。
这样,典型的使用叉的是这样的:
if (0 == (child = fork()))
// continue as child.
else
// Continue as parent.
0
相关问题
- 1. 在分岔期间,孩子的执行到底在哪里开始?
- 2. 在哪里添加孩子?
- 3. 从哪里开始进行QuickBooks开发?
- 4. 从哪里开始进行WSN开发
- 5. - 从哪里开始?
- 6. 从哪里开始
- 7. 开始从哪里开始移植?
- 8. python从哪里开始执行代码?
- 9. 从哪里开始进行TCP通信?
- 10. 从哪里开始使用二叉搜索树?
- 11. 使用叉子做一些事情,而孩子正在运行
- 12. 从哪里开始C#
- 13. Jruby从哪里开始?
- 14. 从哪里开始Python
- 15. nodejs从哪里开始?
- 16. XNA从哪里开始?
- 17. 从哪里开始Android Android
- 18. 从哪里开始Rails
- 19. 崩溃 - 从哪里开始?
- 20. 从哪里开始 - android?
- 21. Hashtable/Map:从哪里开始
- 22. 从哪里开始Magento?
- 23. 从哪里开始联网
- 24. Mean.js,我从哪里开始?
- 25. Silverlight MVVM从哪里开始
- 26. 从哪里开始NodeJS?
- 27. dealloc从哪里开始?
- 28. 从哪里开始春季?
- 29. XSLT从哪里开始?
- 30. .NET 3D,从哪里开始?
子进程和父进程几乎分叉后的相同,这意味着这两个孩子和家长将继续从行执行后叉'()'。 – nhahtdh
这个问题是用极低的质量制定的。请问我们什么时候请多考虑10秒。 –
因此,不是花时间写完这个问题,而是没有做出基本的printf()调试来解决这个问题?这里是代码:int main(void){printf(“starting \ n”); switch(fork()){case 0:printf(“分叉进程\ n”);打破;默认:printf(“父进程\ n”); break;} exit(0); } – tbert