[英]Creating child processes in Linux
可以创建其他进程(子进程)的进程,同时以下内容是正确的:
a)流程的PID = 0
b)子进程可以继续独立生活
c)流程创建者将其上下文复制到子流程
d)以上都是正确的
我的观点是a)不能是因为PID = 0被保留,处理器创建者也不会将其上下文复制到子进程,所以我在考虑b,因为它可以独立存在,但不会被称为守护程序然后?? 那么,这个问题有正确的答案吗?
阅读有关fork的知识,以了解如何创建子进程。 那很可能会回答你的问题
fork()系统调用创建现有进程的克隆/副本。 现在,两个进程正在运行,它们具有相同的数据,程序中的位置以及进程映像。 区别在于fork()系统调用的返回值。
由于fork()函数将不同的值返回到父进程(分叉)和子进程(分叉),因此您可以确定在父进程还是子进程中运行。
当在父进程中时,父(派生)进程接收到结果fork()== childpid,因此父进程知道子进程的ID(因此可以杀死它,等待其终止,等等)。
父级也可能收到结果fork()== -1,这表明fork()系统调用失败。
在子进程中,子进程(派生的)接收到结果fork()== 0,并且如果您想知道子进程的ID,只需询问当前进程ID即可获得子进程的ID。 。
这是一篇与我发布的代码示例相关的文章, 如何使用fork() 。
细微之处在于(a)不正确,因为父级和子级每个都有一个不为= 0的进程ID,但是在子级中,fork()的返回始终为= 0。 因此,手册似乎表明PID为= 0。 (b)部分为真。 (c)部分是不正确的,因为不是由进程创建者复制任何内容,而是由系统调用(在父进程的上下文中)进行复制。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.