在.xinitrc中启动新的进程组

在.xinitrc中启动新的进程组

我有一个状态栏(lemonbar),我通过管道将几个脚本的输出(时间、电池、音量等)传输到其中。这些脚本以及状态栏本身都是在单个 bash 脚本中启动的statusbar。当statusbar进程被杀死时,它会通过尝试杀死其子进程来清理自身,如下所示:

trap "trap - SIGTERM && kill -- -$$" SIGINT SIGTERM EXIT

如果我调用statusbar终端,然后使用 SIGTERM 信号退出,这一切都可以正常工作。

但是,当我像这样开始文件时:statusbar脚本无法再自行清理。原因是它与脚本位于同一进程组中,以及在那里启动的所有其他进程。我通过以下方式发现了这一点.xinitrcstatusbar &statusbar.xinitrc回答。

问题是:我可以将statusbar进程及其所有子进程放入自己的进程组中.xinitrc,以便它可以很好地自行清理吗?或者,也许有一种不同的方式来杀死 的所有孩子statusbar

PS:我意识到想要干净地杀死状态栏并不常见。但是,我想这样做,以便我可以轻松地重新启动它并最终动态更改我的颜色主题,而无需退出 X。

答案1

您可以尝试使用setsid(包的一部分util-linux.xinitrc在新会话中启动脚本:

setsid statusbar

但它还会收到你的信号吗?

相关内容