Varie correzioni, completata revisione capitolo sull'I/O su file
[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 }