C中的fork();应该是父进程,应该是子进程

时间:2015-02-23 18:19:32

标签: c multiprocessing fork

这似乎是一个愚蠢的问题,但除了知道这是关于多线程之外,我对fork()并没有很好的理解。子进程就像一个线程。如果需要通过fork()处理任务,如何正确地将任务分配给父进程和子进程?

2 个答案:

答案 0 :(得分:1)

检查fork的返回值。子进程将获得0的值。父母将收到孩子的进程ID的值。

答案 1 :(得分:0)

阅读Advanced Linux Programming,其中有一整章专门讨论流程(因为fork难以解释);

然后阅读fork(2)的文件; fork不是multi-threading,而是关于创建processes。线程通常使用pthread_create(3)创建(在clone(2)之上实现,这是一个特定于Linux的系统调用)。阅读一些pthreads tutorial以了解有关线程的更多信息。

PS。 fork 很难理解(你需要几个小时的阅读,一些实验,也许使用strace(1),直到你到达“AhAh”insight时刻你了解它,因为它成功回来两次。您需要保留其结果,并且需要测试三种情况的结果:< 0(失败),== 0(子),> 0(父)。不要忘记稍后在父母中调用waitpid(2)(或类似内容),以避免zombie processes

相关问题