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