【发布时间】:2017-07-28 12:44:00
【问题描述】:
我遇到了一个我无法解决的奇怪问题。这是我的代码。
#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 中用不同的值覆盖 SIGPOLL 以获得 '0' 吗?
-
@ZangMingJie 感谢您的建议,这只是一个测试程序。
-
@Serge 谢谢,我试过 SIGIO,但没用。