linux - 在信号处理程序中恢复终端设置 (termios)

标签 linux terminal signal-handling termios

在更改终端设置的代码中(它嵌入了 python,后者又使用一些终端操作模块),在我通过 Ctrl-\向进程发送 SIGQUIT 退出后,更改的状态仍然存在。

在启动时保存终端设置,然后注册将恢复这些设置的 SIGQUIT 处理程序是否安全?如果不安全,最坏的情况下会发生什么?

最佳答案

信号处理程序通常应该精简并且不做太多工作。您不应该从信号处理程序调用非异步安全函数。 Async-signal-safe functions .因此,如果您的 termios 代码包含非 AS 函数,则不建议从信号处理程序恢复终端设置(尽管您将处理 SIGQUIT)

这个怎么样:

fork()signal 的手册页中被列为 AS 安全。为什么不 fork 一个子进程,execv 另一个将恢复设置的程序?

关于linux - 在信号处理程序中恢复终端设置 (termios),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40169308/

相关文章:

linux - 追加文件的文本

linux - rq->cfs.load 值在 Linux 内核中到底代表什么?

linux - Windows sublinux - 获取调用 linux 的 windows 路径

r - 假人的Makefile? Mac OS X

terminal - 使用 AppleScript 向终端发送命令

linux - 指定符号放置的绝对地址

macos - 通过 cURL 保存文件时有没有办法给出特定的文件名?

c - 编写我自己的 shell - 无法正确处理 ctrl+c (SIGINT)

c - 有没有办法测试我是否在信号处理程序中?

c - 父进程正在向子进程发出信号,但子进程的信号处理需要改进