1
我有一個奇怪的問題,我無法解決。這是我的代碼。爲什麼我無法從ioctl函數接收SIGPOLL信號?
#include <stdio.h>
#include <stropts.h>
#include <signal.h>
#include <sys/types.h>
void handle_signal(int s)
{
char c = getchar();
printf("got char '%c'\n");
if(c == 'q')
{
exit(0);
}
}
int main(int argc, char** argv)
{
sigset(SIGPOLL, handle_signal);
ioctl(0, I_SETSIG, S_RDNORM);
printf("type q to exit");
while(1);
return 0;
}
當我運行這個程序,我在終端鍵入字符,但它沒有工作!我無法收到SIGPOLL信號。有人可以給我一些建議嗎?順便說一下,我的操作系統是Ubuntu 12.04。
我懷疑你是否可以在信號處理程序中調用'getchar'。 –
是不是你試圖用ioctl中'0'的不同值覆蓋SIGPOLL? – Serge
@ZangMingJie謝謝你的建議,它只是一個測試程序。 – BrianChen