【发布时间】:2016-10-21 05:53:33
【问题描述】:
在更改终端设置的代码中(它嵌入了 python,而后者又使用了一些终端操作模块),在我通过 Ctrl-\ 向进程发送 SIGQUIT 退出后,更改的状态仍然存在。
在启动时保存终端设置是否安全,然后注册将恢复这些设置的 SIGQUIT 处理程序?如果不安全,最坏的情况会发生什么?
【问题讨论】:
标签: linux terminal signal-handling termios
在更改终端设置的代码中(它嵌入了 python,而后者又使用了一些终端操作模块),在我通过 Ctrl-\ 向进程发送 SIGQUIT 退出后,更改的状态仍然存在。
在启动时保存终端设置是否安全,然后注册将恢复这些设置的 SIGQUIT 处理程序?如果不安全,最坏的情况会发生什么?
【问题讨论】:
标签: linux terminal signal-handling termios
信号处理程序通常应该是精简的,并且不做太多工作。您不应该从信号处理程序调用非异步安全函数。 Async-signal-safe functions。因此,如果您的 termios 代码包含非 AS 函数,则不建议从信号处理程序恢复终端设置(尽管您将处理 SIGQUIT)
这个怎么样:
fork() 在signal 的手册页中被列为 AS 安全。为什么不 fork 一个子进程,execv 另一个可以恢复设置的程序?
【讨论】: