查询Ctrl+S与Ctrl+Q对应的信号名称及处理方法
Ctrl+S 和 Ctrl+Q 的信号相关说明
默认情况下,这两个组合键根本不会给进程发送信号——它们是终端自带的XON/XOFF流控制功能:
- 按Ctrl+S:终端会暂停输出,不管进程有没有在运行,屏幕就停住了
- 按Ctrl+Q:终端恢复输出,继续显示进程的打印内容
如果想让这两个按键触发自定义的信号处理函数,得先关掉终端的流控制:
stty -ixon
关掉之后,你可以通过终端设置把它们绑定到特定信号,或者在程序里直接读取终端输入来处理。常见的绑定方式是:
- 把Ctrl+S绑定到SIGTSTP(这个信号和Ctrl+Z默认触发的是同一个,属于可捕获的终端停止信号)
- 把Ctrl+Q绑定到SIGCONT(用于恢复被SIGTSTP暂停的进程)
你也可以用stty -a命令查看当前终端的按键映射,里面的stop项就是对应暂停的按键(默认Ctrl+S),start项是恢复按键(默认Ctrl+Q)。
内容的提问来源于stack exchange,提问作者Toni Ivanov
相关产品推荐
相关产品推荐

