[solved]新手再请教一下,关于系统调用的问题。

为当前最终发行版之前的所有版本提供支持
回复
头像
ifoolb
帖子: 45
注册时间: 2013-02-06 21:17
系统: Fedora newest
送出感谢: 0
接收感谢: 0

[solved]新手再请教一下,关于系统调用的问题。

#1

帖子 ifoolb » 2013-02-20 11:33

老实说我这种习惯c++面向对象方法的人读 advanced programming Unix environment 真的很吃力,对stdlib 和unistd 一点都不熟悉。我在用系统调用的时候很疑惑,感觉不管是exec 系列还是system()函数都是用shell去调用一个新程序,但我却始终不太明白shell在unix和类unix中的地位究竟如何。难道它与内核深度整合,但是人们又说shell高级语言的效率当然低于低级语言的效率,既然如此那不是exec系统调用对shell的依赖很强,效率也不高?那么,是否存在不通过shell来运行一个程序的方法呢?
上次由 ifoolb 在 2013-02-21 16:33,总共编辑 1 次。
Like a fool,I'm foolish enough.
onemoo
帖子: 70
注册时间: 2010-10-12 23:52
送出感谢: 0
接收感谢: 0

Re: 新手再请教一下,关于系统调用的问题。

#2

帖子 onemoo » 2013-02-21 1:47

shall是供用户(人)来操作系统用的。

在shall中启动一个新程序时,首先会fork()一个新进程,然后通过exec()系统调用执行相应的ELF文件。

在程序中直接fork的话,不就是不通过shall来运行一个程序了么。
同上,shall本身也是个程序,这就是由一个程序来启动另一个程序。
Use Vim or Emacs? It's a problem!
头像
zhw2101024
帖子: 1849
注册时间: 2009-03-28 16:10
系统: Arch debian win7
送出感谢: 9 次
接收感谢: 70 次
联系:

Re: 新手再请教一下,关于系统调用的问题。

#3

帖子 zhw2101024 » 2013-02-21 9:17

感觉不管是exec 系列还是system()函数都是用shell去调用一个新程序
把感觉当事实,这就是你纠结的原因所在。为什么我搜索的结果是exec在shell里面执行程序,system()不需要通过shell调用呢?
buzzerrookie
帖子: 116
注册时间: 2012-08-21 18:17
送出感谢: 0
接收感谢: 8 次

Re: 新手再请教一下,关于系统调用的问题。

#4

帖子 buzzerrookie » 2013-02-21 9:54

exec不是通过shell执行的,system才是用shell执行的。APUE讲了exec函数族
我是一个程序员。
头像
ifoolb
帖子: 45
注册时间: 2013-02-06 21:17
系统: Fedora newest
送出感谢: 0
接收感谢: 0

Re: 新手再请教一下,关于系统调用的问题。

#5

帖子 ifoolb » 2013-02-21 16:31

buzzerrookie 写了:exec不是通过shell执行的,system才是用shell执行的。APUE讲了exec函数族
非常感谢你的解答。
我的学的比较粗浅,advanced programming unix environment 我读起来很费力,已经放弃了。现在在读the linux programming interface,虽然我英语也不好,但是该书讲的很细致,可读性更强,就是篇幅非常的大,1500页左右,目前我只看了百多页。
Like a fool,I'm foolish enough.
buzzerrookie
帖子: 116
注册时间: 2012-08-21 18:17
送出感谢: 0
接收感谢: 8 次

Re: [solved]新手再请教一下,关于系统调用的问题。

#6

帖子 buzzerrookie » 2013-02-21 20:32

推荐先看看 《The UNIX Programming Environment》(中译本《UNIX编程环境》),然后再看APUE也不迟。
我是一个程序员。
回复

回到 “老旧版本支持”