我的问题是 Unix 中如何处理信号。它们是通过创建新线程来处理还是有其他东西?还有当信号到来时程序的执行流程是怎样的?
我所说的执行流程是指,假设我正在执行一个函数X
,并且调用另一个函数Y
。因此编译器暂停函数X
的执行并转到函数Y
。完成函数Y
后,编译器再次从暂停处继续执行程序X
。同样我想知道当信号到来时程序如何执行。
我在程序中使用settimer
来执行函数。但是,当我降低间隔值时,函数会再次调用,之前的执行会被取消,尽管我对此不确定。代码太乱太长所以我没有把它贴在这里。
感谢您的调查......!
最佳答案
操作系统停止运行接收信号的线程并运行信号处理程序。当它返回时,原始线程会在原来的位置重新启动。
如果当另一个信号进入时信号处理程序已经在运行,则可以在 sigaction 调用中配置该操作。
关于linux - Unix 中如何处理信号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34454737/