2011-04-06 50 views
0

我很感兴趣的是,在点击一个图标和让init创建一个新进程之间发生了什么。我知道bash可以启动一个应用程序,因为它是小孩,但是Bash只是发出一个fork命令? X Windows系统是否也这样做? Gnome面板启动器是否将应用程序名称转发给BASH?什么获得了“启动过程的命令行”的信息?Linux启动应用程序的方式和方法有哪些

回答

2

在Linux中,您使用fork()创建了新进程,因此每个对产卵过程感兴趣的人都可以沿着这条路走下去。

BASH使用fork(),然后进行一些其他系统调用(我猜想沿着dup2(),pipe()等行)来处理新进程的输入和输出配置。它还负责传递参数和环境变量。然后,最后的exec()将执行交给第二个程序。

但是,您不需要使用BASH来产生进程。任何进程都可以使用fork()exec():您可以使用少于15行的C代码创建自己的程序启动器。

相关问题