我对单击图标和让 init 创建新进程之间发生的事情感兴趣。我知道 bash 可以启动一个应用程序,但是 Bash 只是发出一个 fork 命令吗? X Windows 系统是否也这样做? Gnome 面板启动器是否只是将应用程序名称转发给 BASH?什么获取“启动进程的命令行”的信息?
最佳答案
在 Linux 中,您使用 fork()
创建新进程,因此每个对生成进程感兴趣的人都沿着这条路走。
BASH 使用 fork()
,然后是一些其他的系统调用(我猜是 dup2()
、pipe()
等)来处理新进程的输入和输出配置。它还负责传递参数和环境变量。然后,最后一个 exec()
将执行交给第二个程序。
但是,您不需要使用 BASH 来生成进程。任何进程都可以fork()
和exec()
:您可以用不到 15 行 C 代码自己创建一个程序启动器。
关于linux - Linux启动应用程序的途径和方法有哪些,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5560443/