Unix 中是如何处理信号的?
How are signals handled in Unix?
我的问题是 Unix 中是如何处理信号的。他们是通过制作新线程来处理的还是有其他东西?还有信号来的时候程序的执行流程是怎样的?
我所说的执行流程是指,假设我在一个函数 X
的中间,然后调用另一个函数 Y
。所以编译器暂停函数 X
的执行并转到函数 Y
。完成函数 Y
后,编译器再次从暂停处继续执行程序 X
。同样,我想知道当信号到来时程序是如何执行的。
我在我的程序中使用 settimer
来执行一个函数。但是,当我降低 interval value
时,该函数会再次调用,之前的执行会被取消,尽管我不确定。代码太乱太长就不贴了
感谢您的关注..!
操作系统停止运行接收信号的线程并运行信号处理程序。当它 returns 时,原始线程会在原处重新启动。
如果信号处理程序已经 运行 当另一个信号进来时,可以在 sigaction 调用中配置该操作。
我的问题是 Unix 中是如何处理信号的。他们是通过制作新线程来处理的还是有其他东西?还有信号来的时候程序的执行流程是怎样的?
我所说的执行流程是指,假设我在一个函数 X
的中间,然后调用另一个函数 Y
。所以编译器暂停函数 X
的执行并转到函数 Y
。完成函数 Y
后,编译器再次从暂停处继续执行程序 X
。同样,我想知道当信号到来时程序是如何执行的。
我在我的程序中使用 settimer
来执行一个函数。但是,当我降低 interval value
时,该函数会再次调用,之前的执行会被取消,尽管我不确定。代码太乱太长就不贴了
感谢您的关注..!
操作系统停止运行接收信号的线程并运行信号处理程序。当它 returns 时,原始线程会在原处重新启动。
如果信号处理程序已经 运行 当另一个信号进来时,可以在 sigaction 调用中配置该操作。