X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=listati%2Frtsigvalsend.c;fp=listati%2Frtsigvalsend.c;h=96897341ac5aa6ab60c0b8e1e932fbe5d46dabf7;hp=0000000000000000000000000000000000000000;hb=381b50b7a33f32f8f262e59a6cdf16faf57c94ae;hpb=c2e762abed93fe970c6c4d019a8bfe95fadb4efa diff --git a/listati/rtsigvalsend.c b/listati/rtsigvalsend.c new file mode 100644 index 0000000..9689734 --- /dev/null +++ b/listati/rtsigvalsend.c @@ -0,0 +1,28 @@ +int main(int argc, char *argv[], char *envp[]) +{ + char buffer[MAXLINE+1]; + int nread; + sigval_t value; + int signo = SIGRTMIN+1; + + struct sigaction new_handl, old_handl; + sigemptyset(&new_handl.sa_mask); + new_handl.sa_sigaction = sig_handler; + new_handl.sa_flags=SA_SIGINFO; + /* change action for signo signal */ + sigaction(signo, &new_handl, &old_handl); + while (1) { + nread = read(STDIN_FILENO, buffer, MAXLINE); + if (nread < 0) { + printf("Errore in lettura: %s\n", strerror(errno)); + return 0; + } + buffer[nread]=0; + value.sival_int = strtol(buffer, NULL, 10); + if (value.sival_int > 0) { + sigqueue(getpid(), signo, value); + } else { + printf("Ignoring invalid input\n"); + } + } +}