我知道ctrl
+z
改变了一个过程前景到背景- 作为暂停- 通过SIGTSTP
。我可以通过fg
或bg
根据需要重新运行后台挂起的进程。
问题
bg
发出什么信号fg
?
不确定两者发送的内容是否相同或不同。
我确实意识到没有既非man fg
也非man bg
。好吧,没有关于通过fg --help
和的信号的信息bg --help
答案1
bg
并且fg
不发送信号。它们是改变 shell 行为方式的内置函数。
其工作原理是用户的输入必须到达其预期目的地。当您运行时bg (job)
,您告诉 shell 您不再希望该进程从控制台读取或写入,只需在其中运行即可。
因此,从那时起,当您写入控制台时,壳发送SIGTTIN
或SIGTTOU
信号分别告诉该进程不允许读取或写入。
要回答您的后续问题:当您有一个在前台运行的进程想要移动到后台时,您可以点击将信号Ctrl + Z
发送SIGTSTP
到正在运行的作业(这是交互式停止信号)。然后运行“bg (job #)”,它告诉 shell“我希望这个作业移到后台”。
然后,shell 会将该作业标记为内存中的后台作业,并相应地处理它,SIGCONT
如果发现它当前已停止,则发送该作业。该bg
命令本身并不发送信号,但 shell 可能会发送信号SIGCONT
作为对 的反应bg
。