Я пытался следующие программы обработчика сигнала, имея в виду от онлайн учебник, но это не кажется, работает, что случилось с моим кодом:Почему мой обработчик сигнала не работает с использованием функции sigaction?
#include<signal.h>
#include<unistd.h>
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
typedef void (*SignalHandlerPointer)(int);
static void UsrHostSigAbort(int pSignal)
{
//stopService();
printf("pankaj");
}
void HandleHostSignal()
{
struct sigaction satmp;
memset(&satmp, '\0' , sizeof(satmp));
SignalHandlerPointer usrSigHandler;
satmp.sa_flags &= ~SA_SIGINFO;
satmp.sa_handler = UsrHostSigAbort;
usrSigHandler = sigaction (SIGINT , &satmp, NULL);
}
void main()
{
HandleHostSignal();
while(1)
{
sleep(1);
}
}
Я компиляции и запуска этой программы в убунту.
Какую операционную систему вы используете? – Ari0nhh
@ Ari0nhh это ubuntu, обновил Q с помощью этой информации. –
Обратите внимание на обсуждение в [Как избежать использования 'printf()' в обработчике сигналов?] (Http://stackoverflow.com/questions/16891019/) Вероятно, это не причина вашей проблемы, но вы должны быть осознавая описанные проблемы. –