免费注册 查看新帖 |

Chinaunix

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

exec的问题请教下 [复制链接]

论坛徽章:
1
IT运维版块每日发帖之星
日期:2016-04-30 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-07-04 22:48 |显示全部楼层 |倒序浏览
从资料中得知
exec命令不产生新的子进程,在执行时会把当前的shell process关闭,然后换到后面
的命令继续执行。不再返回关闭的shell.
exec在对文件描述符操作的时候(也只有这时候),它不会覆盖当前的shell

最后一条exec在对文件描述符操作的时候(也只有这时候),它不会覆盖当前的shell
登录到终端执行
exec 4<&0 0<stock.txt
结果退出shell了,不是说“exec在对文件描述符操作的时候(也只有这时候),它不会覆盖当前的shell

实在不知道这个为什么退出了,希望明白的给解释下,谢谢了。

论坛徽章:
1
IT运维版块每日发帖之星
日期:2016-04-30 06:20:00
2 [报告]
发表于 2011-07-05 10:04 |显示全部楼层
实在愚钝,”stdin 从stock.txt结尾读到EOF“这句我明白,可后面就不清楚了

论坛徽章:
1
IT运维版块每日发帖之星
日期:2016-04-30 06:20:00
3 [报告]
发表于 2011-07-05 14:15 |显示全部楼层
是没有后面了,可是shell怎么也被关闭了?还请把处理过程讲解下哦

论坛徽章:
1
IT运维版块每日发帖之星
日期:2016-04-30 06:20:00
4 [报告]
发表于 2011-07-05 15:12 |显示全部楼层
那意思是如果从tty读入,读完后也就是遇到EOF则登陆shell认为命令执行完毕该退出了。
”exec在对文件描述符操作的时候(也只有这时候),它不会覆盖当前的shell“---不覆盖当前的shell是什么意思呢?

另外还有个程序:
1.
#!/bin/bash
exec 9<&0 0<txt

while read line<&0
do
echo $line
done

exec 0<&9
exec 9<&-
## 这个可以按行输出txt的内容

2.
while read line<txt;echo $line;done
## 这个就只是读入了第一行的内容

为什么第2个就只读入了第一行的内容给变量line呢,而从文件描述符读入就是一行一行的读入呢,难道前者在每行后面加了换行 ?

笨人没办法 ,还想整明白。劳烦各位了

论坛徽章:
1
IT运维版块每日发帖之星
日期:2016-04-30 06:20:00
5 [报告]
发表于 2011-07-05 16:28 |显示全部楼层
辛苦各位了,非常感谢。感觉有些书写的真的很笼统,有很多细节没做描述。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP