Correzioni rimaste indietro ed espansione funzioni del resolver.
[gapil.git] / listati / FifoReporter-init.c
1 ...
2 #include <sys/epoll.h>    /* Linux epoll interface */
3 #include <sys/signalfd.h> /* Linux signalfd interface */
4
5 void die(char *);         /* print error and exit function */
6 #define MAX_EPOLL_EV 10
7 int main(int argc, char *argv[])
8 {
9 /* Variables definition */
10     int i, n, nread, t = 10;
11     char buffer[4096];
12     int fifofd, epfd, sigfd;
13     sigset_t sigmask;
14     char *fifoname = "/tmp/reporter.fifo";
15     struct epoll_event epev, events[MAX_EPOLL_EV];
16     struct signalfd_siginfo siginf;
17     ...
18     /* Initial setup */
19     if ((epfd=epoll_create(5)) < 0)                        // epoll init
20         die("Failing on epoll_create");
21     /* Signal setup for signalfd and epoll use */
22     sigemptyset(&sigmask);
23     sigaddset(&sigmask, SIGINT);
24     sigaddset(&sigmask, SIGQUIT);
25     sigaddset(&sigmask, SIGTERM);
26     if (sigprocmask(SIG_BLOCK, &sigmask, NULL) == -1)      // block signals
27         die("Failing in sigprocmask");
28     if ((sigfd=signalfd(-1, &sigmask, SFD_NONBLOCK)) == -1) // take a signalfd
29         die("Failing in signalfd");
30     epev.data.fd = sigfd;                      // add fd to epoll 
31     epev.events = EPOLLIN;
32     if (epoll_ctl(epfd, EPOLL_CTL_ADD, sigfd, &epev)) 
33         die("Failing in signal epoll_ctl");
34     /* Fifo setup for epoll use */
35     if (mkfifo(fifoname, 0622)) {  // create well known fifo if does't exist 
36         if (errno!=EEXIST)
37             die("Cannot create well known fifo");
38     }
39     if ((fifofd = open(fifoname, O_RDWR|O_NONBLOCK)) < 0)  // open fifo
40         die("Cannot open read only well known fifo");
41     epev.data.fd = fifofd;                              // add fd to epoll 
42     epev.events = EPOLLIN;
43     if (epoll_ctl(epfd, EPOLL_CTL_ADD, fifofd, &epev)) 
44         die("Failing in fifo epoll_ctl");
45     /* Main body: wait something to report */
46     ...
47 }