我对点击图标和让init创建新流程之间的内容感兴趣。我知道bash可以像孩子一样启动一个应用程序,但是Bash只发出一个fork命令吗? X Windows系统是否也这样做? Gnome面板启动器是否只是将应用程序名称转发给BASH?什么得到了“启动过程的命令行”的信息?
答案 0 :(得分:2)
在Linux中,您使用fork()
创建新流程,因此每个对产生流程感兴趣的人都会走这条路。
BASH使用fork()
,然后使用其他一些系统调用(我猜是dup2()
,pipe()
等等)来处理输入和输出配置。新进程。它还负责传递参数和环境变量。然后,最终exec()
将执行交给第二个程序。
但是,您不需要使用BASH来生成进程。任何进程都可以fork()
和exec()
:您可以在少于15行的C代码中自己创建一个程序启动器。