当前位置: 技术问答>linux和unix
初学者关于linux驱动异步通知的小问题
来源: 互联网 发布时间:2016-09-11
本文导语: 看到异步通知和异步io的部分,在应用程序中使用signal函数将一个信号和一个处理函数连接在一起,这样由驱动发出信号以后应用程序执行这个函数来处理。 那么,信号来了以后,应用程序是创建一个线程来执行处...
看到异步通知和异步io的部分,在应用程序中使用signal函数将一个信号和一个处理函数连接在一起,这样由驱动发出信号以后应用程序执行这个函数来处理。
那么,信号来了以后,应用程序是创建一个线程来执行处理函数吗?如果处理函数还未执行完,信号又来了,系统会忽略还是多线程处理呢?
那么,信号来了以后,应用程序是创建一个线程来执行处理函数吗?如果处理函数还未执行完,信号又来了,系统会忽略还是多线程处理呢?
|
信号是排队的,就像你买票一样。上一个没买完,轮不到你。
不过有的人比较拽,他们可能是ZF的官员,直接不用排队就拿票,你也没办法。
不过有的人比较拽,他们可能是ZF的官员,直接不用排队就拿票,你也没办法。
|
信号处理函数是在内核里面处理的,而不是创建线程来处理的.
对于你说的信号处理函数未执行完,接着信号又来,你可以设置忽略,还是重入执行.
该设置你可以通过struct sigaction 的sa_flags设置.
对于你说的信号处理函数未执行完,接着信号又来,你可以设置忽略,还是重入执行.
该设置你可以通过struct sigaction 的sa_flags设置.
|
信号处理函数在用户态。linux从内核态跳转到用户态的信号处理函数中用的是很巧妙的方法(修改堆栈),有兴趣可以研究一下