当一个程序启动时(通过exec(3)
系统调用系列之一),它会从父级继承环境(即 shell 变量export
ed)和打开的文件。启动程序时所做的事情是fork(2)
,子程序设置环境和文件,然后exec(3)
创建新程序。当 shell 执行此操作时,STDIN、STDOUT 和 STDERR 将连接到终端。任何图形启动器的作用取决于它,但应该将它们连接到/dev/null
(键盘输入应该来自哪里,输出应该去往哪里?)。
如果像这样启动的程序依次调用exec(3)
,则如上所述。system(3)
有点复杂,因为它会生成一个 shell 来执行命令行解析等,然后该 shellexec(3)
执行命令。但机制是相同的:文件是继承的,环境也是如此。
归档时间: |
|
查看次数: |
55 次 |
最近记录: |