免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1690 | 回复: 2
打印 上一主题 下一主题

shell中,进程间关系的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-05-09 09:50 |只看该作者 |倒序浏览
我在apue中看到的,很不理解:Bourne SHELL下执行命令,ps -o pid,ppid,pgid,sid,comn | cat1(cat1 是cat的一个副本,) 时 输出是
PID        PPID     PGID     SID     COMMAND
949       947       949      949    SH
1823     949       949      949    CAT1
1824     1823     949      949    PS
然后说,管道线中的最后一个进程是shell的子进程,该管道线进程的第一个进程则是最后一个进程的子进程。从中可以看出,shell fork一个它自身的副本,然后再为管道线中的每条指令fork一个进程。

我想问的就是,管道线对应的那几个进程分别是哪个?第一个进程....最后一个进程....

ps:目前发现,unix中得各种ID实在是让人头疼....有没有什么好的理解方法,求指教

论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
2 [报告]
发表于 2012-05-09 11:09 |只看该作者
PPID (parent process ID)
PID (process ID)
PGID (process group ID)
SID (session ID) of processes

论坛徽章:
0
3 [报告]
发表于 2012-05-09 11:22 |只看该作者
数字表示进程号,F表示fork,E表示exec,——|——>表示管道线。
根据则,sh949 fork了一个自己的副本sh1988,sh1988fork了两个自己的副本,exec一个进程cat2,而使用exec时候,进程号不变的。所以呢,该管道的最后一个进程(cat2 1988其实就是sh1988)是shell的子进程,执行管道线中得其他命令的进程是该进程的一个子进程(意思是,ps1989,cat11990是sh1988的子进程)。
我根据这个理解了 我刚才提的问题!(应该可以吧)
ps:这个图是命令 ps -o pid,ppid,pgid,sid,comn|cat1|cat2 的进程图
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP