我编写了一个C ++程序,我正在gnome终端中执行(我在Ubuntu上)。我按下Ctrl + Z,暂停该过程。稍后,我在同一个终端上执行%
,该终端恢复执行。
根据我的阅读,Ctrl + Z向进程发送TSTP信号,告知它停止执行。但TSTP是礼貌的,因为允许该过程继续,直到它决定它可以停止。在我的C ++程序代码中,我没有做任何事情来明确处理TSTP信号。所以,我的问题是,尽管有TSTP信号,我的C ++代码中的哪些内容仍将继续运行?例如,如果我打开了一个文件流,它会等到它关闭吗?我希望得到一个总体答案,不要太深入或涵盖所有细节。我只是想知道这是怎么发生的。
答案 0 :(得分:3)
您的程序在执行SIGTSTP
处理程序时继续运行。由于您尚未设置一个,因此您将获得默认的信号处理行为,即行为停止。
当您的流程停止时,它就不会被安排执行。文件不会关闭,也不会在文件关闭之前停止延迟(除非在信号处理程序中完成)。
这个网站看起来有一个有用的解释,说明如何安装处理程序来执行某些任务,然后具有默认的停止行为: