3

我已经编写了一个 C++ 程序,并且正在 gnome 终端中执行(我在 Ubuntu 上)。我按 Ctrl + Z,这会暂停该过程。稍后,我%在同一个终端上执行,该终端恢复执行。

根据我的阅读,Ctrl+Z 向进程发送一个 TSTP 信号,告诉它停止执行。但是 TSTP 是有礼貌的,因为该过程可以继续进行,直到它决定可以停止为止。在我的 C++ 程序代码中,我没有做任何事情来明确处理 TSTP 信号。所以,我的问题是,尽管有 TSTP 信号,我的 C++ 代码中的哪些内容会继续运行?例如,如果我打开了一个文件流,它会等到它关闭吗?我期待一个整体的答案,不要太深或涵盖所有细节。我只是想知道这是如何发生的。

4

1 回答 1

3

您的程序在处理程序执行时继续运行SIGTSTP。由于您还没有设置,因此您将获得默认的信号处理行为,即停止进程。

当您的进程停止时,它根本没有计划执行。文件不会关闭,也不会延迟直到文件关闭(除非在信号处理程序中完成)。

该网站似乎对如何安装处理程序以执行某些任务然后具有默认停止行为有帮助的解释:

于 2014-05-14T15:01:03.020 回答