linux - Unix 中如何处理信号?

标签 linux unix operating-system posix alarm

我的问题是 Unix 中如何处理信号。它们是通过创建新线程来处理还是有其他东西?还有当信号到来时程序的执行流程是怎样的?

我所说的执行流程是指,假设我正在执行一个函数X,并且调用另一个函数Y。因此编译器暂停函数X的执行并转到函数Y。完成函数Y后,编译器再次从暂停处继续执行程序X。同样我想知道当信号到来时程序如何执行。

我在程序中使用settimer来执行函数。但是,当我降低间隔值时,函数会再次调用,之前的执行会被取消,尽管我对此不确定。代码太乱太长所以我没有把它贴在这里。

感谢您的调查......!

最佳答案

操作系统停止运行接收信号的线程并运行信号处理程序。当它返回时,原始线程会在原来的位置重新启动。

如果当另一个信号进入时信号处理程序已经在运行,则可以在 sigaction 调用中配置该操作。

关于linux - Unix 中如何处理信号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34454737/

相关文章:

python - 在 python 中获取 Windows 版本的更好方法是什么?

c - 多个进程如何能够同时使用 STDIN/STDOUT?

linux - 在 linux 中找到序列/排序被破坏的行

windows - Unix/Linux 系统易受泄漏全局内核对象的影响吗?

unix - 在 Unix 中通过 FTP 从远程服务器获取最新文件

linux - 比较两个远程服务器之间的文件校验和

linux - 编译到内核中的驱动程序的 init 函数调用

linux - Linux 中 ftrace 和 strace 的区别

linux - 用于处理两个文件并循环进行挂载点检查的 Bash 脚本

c++ - 将 libc++ 链接到 Linux 上的 CMake 项目