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