繁体   English   中英

在Linux中创建子进程

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM