免费注册 查看新帖 |

Chinaunix

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

[C] 还是在人气旺的地儿问shell吧:shell怎样执行内部命令的?外部命令是fork-exec.. [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-01-14 10:01 |只看该作者 |倒序浏览
本帖最后由 ilogo1 于 2013-01-14 10:04 编辑

或者,shell执行内建命令的工作机制是什么,如一个问题就是内建的cd可以改变当前shell的wd,但在外建命令中只能改变子进程的工作目录。。shell不fork一个子进程,它怎样云执行cd这个东东》??本人很菜,各种不懂,,

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
2 [报告]
发表于 2013-01-14 10:21 |只看该作者
问在这里没错,shell讲应用,这里可以讨论起实现方式。

这世界上有个东西叫做“系统调用”,syscall,恩~

论坛徽章:
0
3 [报告]
发表于 2013-01-14 10:55 |只看该作者
可是系统调用要有一个执行环境吧,那cd就不 是一个真正意义上的可执行文件,而是一个字符串,当我们在shell中键入这个cd时由shell去解释,比如去判断属于那个分支,然后执行相应的代码--系统调用???可以这样理解么
starwing83 发表于 2013-01-14 10:21
问在这里没错,shell讲应用,这里可以讨论起实现方式。

这世界上有个东西叫做“系统调用”,syscall,恩 ...

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
4 [报告]
发表于 2013-01-14 11:01 |只看该作者
回复 3# ilogo1


    就是这样。

进程的属性默认是自上而下影响(父进程影响其子进程),而如果你要影响到父进程,那么就无法通过产生一个子进程的方式来产生影响。所以内建命令就是必要的。其基本原理就是直接调用系统调用来影响父进程(即shell)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP