"Fossies" - the Fresh Open Source Software Archive

Member "fuse-3.2.3/example/poll_client.c" (11 May 2018, 1575 Bytes) of package /linux/misc/fuse-3.2.3.tar.xz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file.

    1 /*
    2   FUSE fselclient: FUSE select example client
    3   Copyright (C) 2008       SUSE Linux Products GmbH
    4   Copyright (C) 2008       Tejun Heo <teheo@suse.de>
    5 
    6   This program can be distributed under the terms of the GNU GPL.
    7   See the file COPYING.
    8 */
    9 
   10 /** @file
   11  *
   12  * This program tests the poll.c example file systsem.
   13  *
   14  * Compile with:
   15  *
   16  *      gcc -Wall poll_client.c -o poll_client
   17  *
   18  * ## Source code ##
   19  * \include poll_client.c
   20  */
   21 
   22 #include <config.h>
   23 
   24 #include <sys/select.h>
   25 #include <sys/time.h>
   26 #include <sys/types.h>
   27 #include <sys/stat.h>
   28 #include <fcntl.h>
   29 #include <unistd.h>
   30 #include <ctype.h>
   31 #include <stdio.h>
   32 #include <stdlib.h>
   33 #include <errno.h>
   34 
   35 #define FSEL_FILES  16
   36 
   37 int main(void)
   38 {
   39     static const char hex_map[FSEL_FILES] = "0123456789ABCDEF";
   40     int fds[FSEL_FILES];
   41     int i, nfds, tries;
   42 
   43     for (i = 0; i < FSEL_FILES; i++) {
   44         char name[] = { hex_map[i], '\0' };
   45         fds[i] = open(name, O_RDONLY);
   46         if (fds[i] < 0) {
   47             perror("open");
   48             return 1;
   49         }
   50     }
   51     nfds = fds[FSEL_FILES - 1] + 1;
   52 
   53     for(tries=0; tries < 16; tries++) {
   54         static char buf[4096];
   55         fd_set rfds;
   56         int rc;
   57 
   58         FD_ZERO(&rfds);
   59         for (i = 0; i < FSEL_FILES; i++)
   60             FD_SET(fds[i], &rfds);
   61 
   62         rc = select(nfds, &rfds, NULL, NULL, NULL);
   63 
   64         if (rc < 0) {
   65             perror("select");
   66             return 1;
   67         }
   68 
   69         for (i = 0; i < FSEL_FILES; i++) {
   70             if (!FD_ISSET(fds[i], &rfds)) {
   71                 printf("_:   ");
   72                 continue;
   73             }
   74             printf("%X:", i);
   75             rc = read(fds[i], buf, sizeof(buf));
   76             if (rc < 0) {
   77                 perror("read");
   78                 return 1;
   79             }
   80             printf("%02d ", rc);
   81         }
   82         printf("\n");
   83     }
   84     return 0;
   85 }