我对XMonad运行程序过程有一些疑问。我希望,这些问题的答案也可以解释在X环境中运行应用程序的“规范”方式。
XMonad使用函数“spawn”来运行终端模拟器和程序启动器(例如gmrun)。
此函数调用'spawnPID',它构造'/ bin / sh cmd'命令。
问题1:为什么我们需要执行'/ bin / sh -c cmd',而不仅仅是'cmd'?
我的假设:解析参数,可以添加到xmonad.hs中的命令。
此外。对于执行构造的命令'spawnPID',称为'xfork'函数,其中:
问题2(主要):为什么XMonad会在自己的会话中执行每个子进程?
在我看来,会话主要与用户登录会话或“用户独立”程序相关联,i。即守护进程。不是每个单独的程序在一个登录会话下。
问题3:为什么forkProcess + executeFile甚至使用,而不是shell + createProcess或proc + createProcess?
'forkProcess'似乎已被部分弃用(在某些情况下,在多处理器系统下,请参阅this),但在这种情况下'createProcess'必须正常工作并支持在shell下执行而不键入'/ bin / sh -c ”。
这可能是处理执行程序的更好方法。但我不是那么专业,只是简单地阅读文档。