免费注册 查看新帖 |

Chinaunix

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

再问shell进程的相关问题? 多谢 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-09-03 21:54 |只看该作者 |倒序浏览
脚本mysh如下:
#!/bin/bash
#mysh
echo $$ 1>myresult
sleep 100000
------------------------------------------------------------------
情况一:
1, 在当前bash中运行echo $$, 得到当前bash的进程号为:xxxx
2, 以./mysh &运行脚本,会显示出该进程的ID为yyyy, 察看myresult文件,也是yyyy
3, 运行ps -aux察看,发现多了两行:/bin/bash ./myshsleep 100000. 且前者的进程号即为yyyy
4, 以pstree|more察看,发现有如下结果:()是自己注的。
                                init-+-...
                                     .
                                     .
                                     .
                                     |-login---bash(xxxx)-+-more
                                                                  |-mysh(yyyy)---sleep
                                                                  |-pstree
                                     .
                                     .
                                     .
--------------------------------------------------------------------------------------------
情况二:
1,在当前bash中运行echo $$, 得到当前bash的进程号为:xxxx
2,以. ./mysh &运行脚本,会显示出该进程的ID为yyyy, 察看myresult文件,却为xxxx
3, 运行ps -aux察看,发现多了两行:bashsleep 100000. 且前者的进程号即为yyyy
4, 以pstree|more察看,发现有如下结果:()是自己注的。
                                init-+-...
                                     .
                                     .
                                     .
                                     |-login---bash(xxxx)-+-more
                                                                 |-bash(yyyy)---sleep
                                                                 |-pstree
                                     .
                                     .
                                     .
--------------------------------------------------------------------------------------
?1, 首先是两种情况中myresult内容的差别是什么原因?通常的解释都是情况一的运行方式会产生一个subshell,情况二是在当前shell中完成的。很遗憾,我就是不能很好的理解。如两者的进程图所示,其结构并没有什么差别?又如何能说一个有subshell而另一个没有呢?shell是不是就是bash之类的,或者仅仅是一个概念性的东西?哪位大哥能详细帮小弟解释一下?

?2,在这两种情况中,如果运行kill -9 yyyy, 再次察看进程结构却发现sleep被init进程“领养”了,为什么不是被xxxx进程领养呢?

现在还没有分送,抱歉!

[ 本帖最后由 water2oil 于 2007-9-3 21:58 编辑 ]

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
2 [报告]
发表于 2007-09-04 08:27 |只看该作者

论坛徽章:
0
3 [报告]
发表于 2007-09-04 08:54 |只看该作者

多谢

原帖由 waker 于 2007-9-4 08:27 发表
http://bbs.chinaunix.net/viewthread.php?tid=218853&extra=&page=6#pid1583329


十三问的相关章节我学过,有些怀疑,就自己试验了一下,我觉得“结果”是可以接受的,就是理解不了“以有没有“subshell”做的解释”
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP