11 Haziran 2015 Perşembe

Linux Signals - Linux Sinyaller

 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.