Ich habe ein seltsames Problem, das ich nicht lösen kann. Das ist mein Code.Warum kann ich das SIGPOLL-Signal nicht von der ioctl-Funktion empfangen?
#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;
}
Wenn ich dieses Programm ausführen, tippe ich Zeichen in Terminal, aber es hat nicht funktioniert !!! Ich kann das SIGPOLL-Signal nicht empfangen. Kann mir jemand einen Rat geben? Übrigens, mein Betriebssystem ist ubuntu 12.04.
Ich bezweifle, wenn Sie 'getchar' in einem Signalhandler aufrufen können. –
versuchen Sie nicht SIGPOLL mit einem anderen Wert in ioctl für '0' zu überschreiben? – Serge
@ZangMingJie Danke für den Rat, es ist nur ein Programm für den Test. – BrianChen