C   41

miss-edge.c

Guest on 5th May 2022 11:05:40 PM

  1. #include <assert.h>
  2. #include <errno.h>
  3. #include <fcntl.h>
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include <string.h>
  7. #include <sys/epoll.h>
  8. #include <unistd.h>
  9.  
  10. static void print_event (struct epoll_event ev) {
  11.         char flags_str[200];
  12.  
  13.         flags_str[0] = 0;
  14.         flags_str[1] = 0; /* dirty */
  15.  
  16.         if (ev.events & EPOLLIN )       strcat(flags_str, "|EPOLLIN");
  17.         if (ev.events & EPOLLOUT)       strcat(flags_str, "|EPOLLOUT");
  18.         if (ev.events & EPOLLERR)       strcat(flags_str, "|EPOLLERR");
  19.         if (ev.events & EPOLLHUP)       strcat(flags_str, "|EPOLLHUP");
  20.         if (ev.events & EPOLLRDHUP)     strcat(flags_str, "|EPOLLRDHUP");
  21.         if (ev.events & EPOLLPRI)       strcat(flags_str, "|EPOLLPRI");
  22.         if (ev.events & EPOLLET)        strcat(flags_str, "|EPOLLET");
  23.         if (ev.events & EPOLLONESHOT)   strcat(flags_str, "|EPOLLONESHOT");
  24.  
  25.         fprintf(stderr, "Event for fd %i. Flags=(%s).\n",
  26.                         ev.data.fd, flags_str+1);
  27. }
  28.  
  29. int main() {
  30.         int epfd;
  31.         struct epoll_event ev;
  32.         struct epoll_event ret;
  33.         int n;
  34.  
  35.         epfd = epoll_create(1);
  36.  
  37.         ev.data.fd = 0;
  38.         ev.events = EPOLLIN | EPOLLET;
  39.  
  40.         if (epoll_ctl(epfd, EPOLL_CTL_ADD, 0, &ev) != 0)
  41.                 perror("epoll_ctl");
  42.  
  43.         while ((n = epoll_wait(epfd, &ret, 1, -1)) > 0) {
  44.                 printf("tick!\n");
  45.                 print_event(ret);
  46.         }
  47.  
  48.         return 0;
  49. }

Raw Paste


Login or Register to edit or fork this paste. It's free.