当你在进程上点击ctrl + z时会发生什么?

时间:2013-09-29 05:57:57

标签: unix

如果我正在运行一个长时间运行的进程,当我使用 Ctrl + Z 停止它时,我在终端中收到以下消息:

76381 suspended  git clone git@bitbucket.org:kevinburke/<large-repo>.git

暂停流程时会发生什么?国家是否被记忆?此功能是否在操作系统级别实施?当我使用fg重新启动它时,该过程如何能够从中断处继续执行?

1 个答案:

答案 0 :(得分:10)

在终端中按 Ctrl + Z 时,(伪)终端设备驱动程序(内核)的线路规则发送{{1} }信号通知终端设备的前台进程组中的所有进程。

该进程组是终端设备的属性。通常,shell是定义哪个进程组是终端设备的前台进程组的进程。

在shell术语中,进程组称为“作业”,您可以使用SIGTSTPfg命令将作业放在前台和后台,并查找当前正在运行的作业bg命令。

jobs信号与SIGTSTP信号类似,只是与SIGSTOP相反,SIGSTOP可由流程处理。

收到这样的信号后,该过程暂停。也就是说,它已经暂停并且仍在那里,只有在它被杀死或发送SIGTSTP信号以恢复执行之前,它不会被安排再运行。启动作业的shell将等待其中进程组的领导者。如果它被暂停,SIGCONT将返回,表明该进程已暂停。然后,shell可以更新作业的状态并告诉您它已被暂停。

wait()