#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <signal.h>
#include <unistd.h>
void sighandler ( int mysignal) // Gdy wyślemy sygnał wykona się ciało tej funkcji
{
printf (" Otrzymano sygnał %d\n", mysignal);
signal(mysignal , sighandler);
}
int main ( int argc , char *argv[] )
{
char *nazwa = argv[0]; // Pierwszy argument z konsoli
if ( argc != 3 && argc != 2 )
perror("Nieprawidłowa liczba argumentów");
int mysignal;
char *rodzaj_sygnalu = argv[1]; // Drugi argument z konsoli
if( argc == 2) // nie podobano kodu syngnalu w lini komend
{
pause ();
}
else
{
char *numer_sygnalu = argv[2]; // Trzeci argument z konsoli
mysignal = atoi(numer_sygnalu);
}
switch ( rodzaj_sygnalu[0] )
{
case ( 'd'):
signal (mysignal , SIG_DFL);
break;
case ('i'):
signal (mysignal , SIG_IGN);
break;
case ('p'):
signal(mysignal, sighandler);
break;
default:
printf("Prawidłowy rodzaj sygnalu to <d/i/p>");
break;
}
printf("Koniec programu");
return 0;
}
Program odpalany jest w konsoli wraz z podaniem dwoch argumentow. ./nazwa p 15. Powinno wymusić od programu zrealizowanie funkcji sighandler.