signal() function in linux is used to
sets of handler for the given signal number, the handler is any of
SIG_DFL(default action) or SIG_IGN(ignore signal) or address of user
defined function which we called signal handler
syntax:
         sighandler_t signal(int signum,
sighandler_t handler);
the second parameter is the address of
the signal handler function (function pointer), which has the
following syntax
         typedef void (*sighandler_t)(int ); 
Here the parameter int represents the
Signal number.
Here is the simple C program which
describes the SIGINT Signal  handling in linux
signal.c
#include<stdio.h>
#include<signal.h>
void sig_handler(int signum)
{
    printf("I'm in INT_SIGNAL handler:%d\n",signum);
}
int main()
{
    signal(SIGINT,sig_handler);
    while(1)
    {
        printf("hello i'm in main\n");
        sleep(1);
    }
    return 0;
}
Output:
$gcc -o signal signal.c
$./signal
hello i'm in main
hello i'm in main
^CI'm in INT_SIGNAL handler:2
hello i'm in main
hello i'm in main
hello i'm in main
^CI'm in INT_SIGNAL handler:2
hello i'm in main
hello i'm in main
^Z
[2]+  Stopped                 ./signal
Note: to send the SIGINT signal
to the process, use shortcut key CTRL+c  in the keyboard while
program being executed, then our handler will invoked. To stop the
program press CTRL+z keys.
Note: to see list of signals in
linux system open terminal, then enter the command
               $kill -l
 
This comment has been removed by the author.
ReplyDeletec programming on linux with samples
ReplyDeleteGnu-Linux Code Examples