- //while (1) {
- if ((n=epoll_wait(epfd, events, MAX_EPOLL_EV, -1)) < 0)
- die("error on epoll_wait");
- debug("Got %i events\n", n);
- /* loop on epoll events */
- for (i=0; i<n; i++) {
- if (events[i].data.fd == fd) { // if timer expired
- printf("Timer expired:\n");
- while(nread=read(fd, &expirated, sizeof(expirated))) {
- if (nread < 0) {
- if (errno != EAGAIN)
- die("signalfd read error");
- else
- break;
- }
- if (nread != sizeof(expirated)) {
- printf("Error on timer data read, '\n");
- continue;
- }
- printf("Expired %llu times\n", expirated);
- if (pid == 0) {
- printf("in child\n");
- } else {
- printf("in father\n");
+ while (1) {
+ while (n=epoll_wait(epfd, events, MAX_EPOLL_EV, -1)) {
+ if (n < 0) {
+ if (errno != EAGAIN)
+ die("error on epoll_wait");
+ else
+ continue;
+ } else {
+ printf("Got %i events, pid %i, time %i\n", n, pid, time(NULL));
+ /* loop on epoll events */
+ for (i=0; i<n; i++) {
+ if (events[i].data.fd == fd) { // if timer expired
+ printf("Timer expired in pid %i:\n", pid);
+ while(nread=read(fd, &expired, sizeof(expired))) {
+ if (nread < 0) {
+ if (errno != EAGAIN)
+ die("signalfd read error");
+ else
+ break;
+ }
+ if (nread != sizeof(expired)) {
+ printf("Error on timer data read, '\n");
+ continue;
+ }
+ printf("Expired %llu times in pid %i\n",
+ expired, pid);
+ }