当前位置:  技术问答>linux和unix

APUE关于第九章进程关系的疑问

    来源: 互联网  发布时间:2016-10-19

    本文导语:  书中提到了如下两种情况 两种情况的PID和PPID的关系相差很大,请问第一种情况是老版本的SHELL吗,因为我电脑上的是第二种情况(Fedora9) 第一种 ps -xj | cat1 | cat2 下面看一看shell所用的进程控制: PPID PID  PGID  SID...

书中提到了如下两种情况
两种情况的PID和PPID的关系相差很大,请问第一种情况是老版本的SHELL吗,因为我电脑上的是第二种情况(Fedora9)

第一种
ps -xj | cat1 | cat2
下面看一看shell所用的进程控制:
PPID PID  PGID  SID TPGID  COMMAND
1    163   163  163  163  -sh
163  202   163  163  163  cat2
202  203   163  163  163  ps
202  204   163  163  163  cat1

第二种
按下列方式在一个管道中执行两个进程:
ps -xj | cat1
其输出为:
PPID  PID  PGID   SID  TPGID  COMMAND
1     700   700   700  710    -ksh
700   710   710   700  710    ps
700   711   710   700  710    cat1

另外这个进程关系在程序编写中很重要吗,谢谢

|

这个例子关注点在2个方面。

1. 如LZ说的,早期的,有些shell的处理,是管道链中的最后一个进程负责继续创建链中其他的进程,而自身是由shell创建。因此,进程关系如第一个的样子。现在的,bash不是这样。bash都是由shell创建。

2. 进程组的关系。有些shell不支持进程组。而bash这样的shell支持进程组。因此,查看子进程的进程组可以看出2段输出的差异。

|
在第一个例子中,有一个会话,一个进程组
应该是不支持任务控制的shell

在第二个例子中,有一个会话,两个进程组
流行的shell应该都是这个样子

进程关系在编写程序的时候比较重要,像父子关系,是否同一进程组(发送信号时可以指定将信号发送给某个进程组)

|
与win不同linux下有较为严格的进程间父子关系
这些ID只不过是个编号,除了及其个别的为固定以外,其余是随机变化的

|
两者PGID相同是因为shell创建了一个新的进程组,这个新的进程组里面只有ps 和 cat
TPGID是指前台进程组,也就是能读取终端输入的进程组

|

在一个session中可以最多拥有1个终端(或者没有)。

在一个session中可以最少有1个进程组,或者多个进程组。其中的一个为前台进程组,其他为后台进程组。

假设有终端,这个终端,在系统中用一个数据结构来表达。这个数据结构中有一项,就是TPGID,这个值表达一个进程组。可以认为,终端持有了这个进程组。终端持有的进程组,被称为前台进程组。因为只有1个坑位,只能有1个进程组蹲在这里,其他没蹲上的,都是后台进程组。

|
这个我没研究了
shell执行程序时自动创建一个新的进程组,这应该是shell内部的逻辑了
我感觉不用深究了,了解就行了

|


10楼的问题就是。为了支持JOB这样的概念。将管道链起来的一组进程,划归到一个进程组。置于前台。而shell自身则退居后台。

12楼的问题是。tcsetpgrp()可以设置前台进程组。

LZ的问题APUE里有解释的,不过要仔细慢慢看。我比较本。。。。看了好几遍。

|
该回复于2010-12-07 13:40:23被版主删除

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • APUE第2版的例2-1的疑问
  • signal()基础知识,<<apue>>上的程序疑问
  • apue关于record lock一节的疑问,详见:
  • linux管道参数传递的问题-APUE上的例子中的疑问
  • apue程序清单11-5的疑问
  • 下载了APUE源码,怎么打不开啊?
  • 文件名为“apue.tar.Z”的文件在UNIX下怎么打开?大家帮帮忙
  • apue书上的概念,读过这本书的请进
  • 刚学完apue,大家给个建议
  • 求apue的课后答案~~~~~~~~~~~~~
  • APUE 看完之后,拿什么练练手?
  • apue.h的问题
  • APUE+macro
  • apue中的一个问题
  • APUE相关章节不容易理解。
  • 关于apue2 中一个例子的提问
  • apue书的的信号函数,看不懂
  • APUE中 system函数的实现中的问题
  • 哪位兄弟在看apue?相互交流一下
  • APUE中“信号”一节的问题
  • apue 上的 Figure3.10运行后,输出怎么是空白
  • apue page113
  • 关于unix环境高级编程的apue的问题
  • 不同缓冲区长度读操作 APUE2e
  • APUE2 10.12小节中所给的Figure 10.14程序是不是错了?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3