免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: Minsic
打印 上一主题 下一主题

关于subshell和child process的问题 [复制链接]

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-01-24 06:20:00
41 [报告]
发表于 2009-07-24 10:24 |只看该作者
原帖由 blackold 于 2009-7-24 10:01 发表
长篇?

搞得太乱了,不知从何说起。

不同的shell的处理是不同的,这点必须要清楚。

在bash下: $ a=b echo $a就是在当前shell下执行,怎么又跑到subshell下执行了?


我上面写了两种说法丫,说subshell也是其中一种说法

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
42 [报告]
发表于 2009-07-24 10:27 |只看该作者

回复 #41 Minsic 的帖子

晕,你总得二选一吧,非此即彼。

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-01-24 06:20:00
43 [报告]
发表于 2009-07-24 10:28 |只看该作者
原帖由 waker 于 2009-7-24 10:04 发表
根据http://www.sch239.spb.ru:8000/info/oreilly/unix/ksh/ch08_06.htm里的说法,()除了继承环境变量外,与一般的subshell不同的是,还能够能够继承父shell的一般变量,那么


子进程不但继承环境变量,也继 ...


这个意思,是指的那个连接里面的对于nested subshell和script subshell对于变量继承方面说的是错误的?

原帖由 waker 于 2009-7-24 10:10 发表
waker意思是exec会清除非环境变量?那么你在前面11楼举的这个例子:

QUOTE:
(/bin /echo;/bin/echo)首先shell fork一个subshell(子进程一代),由于/bin/echo;/bin/echo不是个简单命令,那就不能节省了,子进 ...


这个还需要消化,因为我看了这个链接http://www.sch239.spb.ru:8000/info/oreilly/unix/ksh/ch08_06.htm里的内容后,也把外部命令(不是脚本)fork的subshell当做nested subshell来看待了……

论坛徽章:
1
丑牛
日期:2014-08-07 17:07:05
44 [报告]
发表于 2009-07-24 10:30 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
45 [报告]
发表于 2009-07-24 10:32 |只看该作者

回复 #44 ILoveMK 的帖子

这些都是内置命令,不用再fork.

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
46 [报告]
发表于 2009-07-24 10:33 |只看该作者

回复 #43 Minsic 的帖子

没人说链接里面说的有问题吧?

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-01-24 06:20:00
47 [报告]
发表于 2009-07-24 10:36 |只看该作者
原帖由 blackold 于 2009-7-24 10:10 发表
A>(/bin/echo $a;/bin/echo $b)
这会产生几个subshell:A--fork-->B------fork--->C(exec echo $a)
                                          |------fork--->D(exec echo $b)


清除也只是清除C,D啊。


这个过程里,关于fork和exec过程我想我是理解的,问题就在于这些变量到底被怎么处理了?黑哥也认为你给我的关于subshell的链接http://www.sch239.spb.ru:8000/info/oreilly/unix/ksh/ch08_06.htm,这句对于变量继承的话是错误的么?
code inside a nested subshell obeys the above rules of subshell inheritance, except that it knows about variables defined in the surrounding shell

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-01-24 06:20:00
48 [报告]
发表于 2009-07-24 10:38 |只看该作者
原帖由 blackold 于 2009-7-24 10:33 发表
没人说链接里面说的有问题吧?


waker在31楼和32楼说的不是这个意思?难道我又囧了?

论坛徽章:
1
丑牛
日期:2014-08-07 17:07:05
49 [报告]
发表于 2009-07-24 10:43 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
50 [报告]
发表于 2009-07-24 10:47 |只看该作者

回复 #49 ILoveMK 的帖子

内置命令哪里用exec?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP