96897341ac5aa6ab60c0b8e1e932fbe5d46dabf7
[gapil.git] / listati / rtsigvalsend.c
1 int main(int argc, char *argv[], char *envp[])
2 {
3     char buffer[MAXLINE+1];
4     int nread;
5     sigval_t value;
6     int signo = SIGRTMIN+1;
7
8     struct sigaction new_handl, old_handl;
9     sigemptyset(&new_handl.sa_mask);
10     new_handl.sa_sigaction = sig_handler;
11     new_handl.sa_flags=SA_SIGINFO;
12     /* change action for signo signal */
13     sigaction(signo, &new_handl, &old_handl);
14     while (1) {
15         nread = read(STDIN_FILENO, buffer, MAXLINE);
16         if (nread < 0) {
17             printf("Errore in lettura: %s\n", strerror(errno));
18             return 0;
19         }
20         buffer[nread]=0;
21         value.sival_int = strtol(buffer, NULL, 10);
22         if (value.sival_int > 0) {
23             sigqueue(getpid(), signo, value);
24         } else {
25             printf("Ignoring invalid input\n");
26         }
27     }
28 }