Linux 程序可以收到 SIGXXX 命令,它们可以在 UI 中响应吗?

Linux 程序可以收到 SIGXXX 命令,它们可以在 UI 中响应吗?

我正在尝试暂停命令,想知道是否有一个终止信号,GUI程序,无论是图形桌面还是终端程序,都会将其视为用户从UI终止程序,就像命令File| Exit或单击X窗口上的按钮一样,从而提示用于保存任何打开的文件。

kill -l显示超过 64 个选项。它们中的任何一个单独组合是否等同于终止的 GUI 选项?

我已经尝试过nano作为示例,但到目前为止我尝试过的选项除了 SIGTERM 之外都不起作用。

答案1

不会。用户通常用来终止进程的主要信号是:

  • SIGINT(由终端中的Ctrl+发送)— 中止当前操作并转到顶层交互循环。C如果程序没有顶级交互循环,则终止该程序。
  • SIGTERM — 彻底停止程序。这可能会进行紧急保存。
  • SIGHUP — 当终端消失时,由系统发送到终端上运行的程序。通常像 SIGTERM 一样处理。
  • SIGQUIT(由终端中的Ctrl+发送)— 没有任何清理和转储核心就死掉(用于调试)。\
  • SIGKILL — 程序终止并且没有机会进行任何清理。

这些都没有常规意义,即程序会提示用户输入任何内容。对于一个程序来说,在 SIGTERM 上进行提示可能是有意义的,但我想不出有一个程序可以做到这一点。有些程序确实会在 SIGINT 上进行提示,提供返回顶层或退出程序或进入调试模式的选择。一般来说,程序收到 SIGTERM 时的假设是用户不在控制台前与程序交互,或者程序没有响应 - 否则用户将使用交互式控件而不是发送信号。

GUI 事件(例如单击x窗口标题栏中的按钮)不会发送信号,而是在正常的 X11 通信通道上发送事件。

相关内容