Merhaba Arkadaşlar bu yazımda SIGINT ve SIGQUIT sinyallerini yakalamayı göreceksiniz. Yakalamak için önce handler dediğimiz fonksiyonu yazmanız ondan sonra signal(SIGINT,handler) biçiminde fonksiyona göndermeniz gerekiyor bunu yaptıktan sonra fonksiyon içine if yapısı koyup if(sig==SIGQUIT) gibi bir condition koyup signalinizi ayırabilirsiniz çeşidine göre .
#include <signal.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
//basic version of the program displays 3 subtitles by pressing CTRL+C
//to finish the program press CTRL+\ (SIGQUIT)
char strings[3][80]={"Ha! Ha! Ha! It's only a superficial signal!\n",
"Only process %d can ignore signal %d \n",
"Ouch - that hurt!\n"};
int string_no=0;
void handler(int sig)
{
if (sig==SIGQUIT){
printf(strings[string_no], getpid(),sig);
}
else {
printf(strings[string_no],getpid(),sig);
string_no=((string_no + 1) % 3);
}
}
int main(int argc, char** argv){
signal(SIGINT,handler);//ctlrl + c kısayollu interrupt signal
signal(SIGQUIT,handler); ctrl + \ kısayollu quit signali
while (true) // infinite loop
{
printf("Hello it is process: %d\n",getpid());
sleep(1);
}
return 0;
}
/* if you want to stop program you can open new terminal and enter kill command with process id like " kill 3593 "
Hiç yorum yok:
Yorum Gönder
Yorum yaptığınız için teşekkür ederiz.