f0c1030ab27842b47b427f74adc6748a81d81eb0
[gapil.git] / listati / FortuneClient.c
1 int main(int argc, char *argv[])
2 {
3 /* Variables definition */
4     int n = 0;
5     char *fortunefilename = "/tmp/fortune.fifo";
6     char line[80];
7     int fifo_server, fifo_client;
8     char fifoname[80];
9     int nread;
10     char buffer[PIPE_BUF];
11     ...
12     snprintf(fifoname, 80, "/tmp/fortune.%d", getpid());     /* compose name */
13     if (mkfifo(fifoname, 0622)) {                        /* open client fifo */
14         if (errno!=EEXIST) {
15             perror("Cannot create well known fifo");
16             exit(-1);
17         }
18     }
19     fifo_server = open(fortunefilename, O_WRONLY);       /* open server fifo */
20     if (fifo_server < 0) {
21         perror("Cannot open well known fifo");
22         exit(-1);
23     }
24     nread = write(fifo_server, fifoname, strlen(fifoname)+1);  /* write name */
25     close(fifo_server);                                 /* close server fifo */
26     fifo_client = open(fifoname, O_RDONLY);              /* open client fifo */
27     if (fifo_client < 0) {
28         perror("Cannot open well known fifo");
29         exit(-1);
30     }
31     nread = read(fifo_client, buffer, sizeof(buffer));        /* read answer */
32     printf("%s", buffer);                                   /* print fortune */
33     close(fifo_client);                                      /* close client */
34     close(fifo_server);                                      /* close server */
35     unlink(fifoname);                                  /* remove client fifo */
36 }