【问题标题】:Creating child processes in Linux在 Linux 中创建子进程
【发布时间】:2014-10-30 01:05:01
【问题描述】:

可以创建其他进程(子进程)的进程,同时以下是正确的:

a) 进程的 PID=0

b) 子进程可以继续独立生活

c) 进程创建者将其上下文复制到子进程

d) 以上都是正确的

我的观点是 a) 不可能,因为 PID=0 是保留的,处理器创建者也不会将其上下文复制到子进程,所以我在考虑 b,因为它可以独立生活,但不是吗被称为守护进程呢??那么这个问题有正确(True)的答案吗?

【问题讨论】:

    标签: linux process pid


    【解决方案1】:

    阅读fork 以了解如何创建子进程。这可能很好地回答了你的问题

    【讨论】:

      【解决方案2】:

      fork() 系统调用创建现有进程的克隆/副本。现在两个进程正在运行,具有相同的数据、程序中的位置和进程映像。区别在于 fork() 系统调用的返回值。

      由于fork()函数给父(forking)进程和子(forked)进程返回不同的值,可以判断是在父进程还是子进程中运行。

      父(分叉)进程在父进程中收到结果 fork() == childpid,因此父进程知道子进程的进程 ID(因此可以杀死它,等待它终止等)。

      父级也可以收到结果 fork() == -1,表示 fork() 系统调用失败。

      子(分叉)进程在子进程中收到结果fork() == 0,如果你想知道子进程的进程id,你只需询问当前进程id就可以得到进程id孩子的。

      这是我发布的代码示例的相关帖子,How to use fork()

      微妙之处在于 (a) 不正确,因为父子进程中的每一个都有一个不 =0 的进程 id,但从 fork() 返回的进程在子进程中总是 =0。因此,手册可能会说 PID 为 =0。 (b) 部分是正确的。 (c) 部分不正确,因为不是进程创建者复制任何内容,而是系统调用(在父进程的上下文中)进行复制。

      【讨论】:

        猜你喜欢
        • 2018-10-27
        • 1970-01-01
        • 1970-01-01
        • 2011-08-18
        • 2013-07-31
        • 2015-07-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多