创建孩子的Linux
问题描述:
过程谁可以创建其他进程(子进程)处理,同时,以下是正确的:创建孩子的Linux
一)该工艺具有PID = 0
B)子进程能够继续独立生活
C)处理,创造者复制它的上下文子进程
d)上述所有属实
我的看法是, a)不能因为PID = 0被保留,处理器创建者不会将其上下文复制到子进程中,所以我在考虑b,因为它可以独立生活,但不会被称为守护进程?那么这个问题是否有一个正确的答案呢?
答
fork()系统调用会创建现有进程的克隆/副本。现在两个进程正在运行,具有相同的数据,程序中的位置以及进程映像。区别在于fork()系统调用的返回值。由于fork()函数向父(分叉)过程和子(分叉)过程返回不同的值,因此可以确定您是在父项还是在子项中运行。
父进程(fork)在父进程中接收到结果fork()== childpid,所以父进程知道该进程的子进程号(因此可以终止它,等待它终止等) 。
父代也可能收到fork()== -1结果,表明fork()系统调用失败。
孩子(分叉)进程在子进程中接收到结果fork()== 0,并且如果你想知道孩子的进程ID,你可以直接询问当前进程ID来获得进程孩子的ID。
这里是一个相关的贴子,我发布了代码示例,How to use fork()。 (a)不是真的,因为每个父母和孩子都有一个不是= 0的进程ID,但是fork()的返回值在孩子中总是= 0。所以可能看起来手册是说PID是= 0。 (b)部分是真实的。部分(c)不是真的,因为它不是复制任何东西的过程创建者,而是复制过程中的系统调用(在父过程的上下文中)。