UNIX中的作业ID存在疑问

时间:2009-10-02 12:13:42

标签: unix process

我问了一个相关的问题 'Difference between process group id and job id in Unix',  但我怀疑没有回答。在那个答案中,写了一个作业id是建立在与shell相关的数据中(内核与它无关),所以前景/后台是对shell的理解,但是当我们做“ps x”时它会显示在统计信息中,"R+""R"分别作为前台和后台进程,但ps由内核执行,所以内核如何知道该作业是后台/前台。

2 个答案:

答案 0 :(得分:1)

作业ID绝对是shell功能。

但是,操作系统具有当前终端进程组ID的概念,shell也使用它来促进作业控制。与当前终端进程具有相同进程组ID的进程接收键盘信号,例如SIGINT,并且能够在终端上进行I / O.这些过程是前台进程。如果进程组ID不同,则该进程是后台进程。当进程是此概念中的前台进程时,ps命令显示+。它仍然不需要了解shell实现的任何有关作业控制的信息。

答案 1 :(得分:0)

我不会说'内核与它无关',因为shell使用内核中的例程来实现其目的。

shell 决定进程是前台还是后台,但内核也必须感知,并且可以在shell请求时报告进程的状态。