#include <sys/types.h> #include <sys/stat.h> int mkfifo(char *pathname, mode_t mode);
mkfifo
creates a new OpenEdition FIFO special file. pathname
is
the special filename, and mode
is the set of file permission bits for
the new FIFO file. The owner ID of pathname
is set to the effective
user ID of the process. The group ID of pathname
is set to the owning
directory's group ID.
mkfifo
returns 0 if it is successful and
- 1 if it is not successful.
POSIX PIPE_BUF
constant. A longer message
causes this example to deadlock:
/* This program must be compiled with the posix option */ #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> #include <fcntl.h> #include <stdlib.h> #include <limits.h> main() { int rc; int fifofd; char input[_POSIX_PIPE_BUF]; rc = mkfifo("named.pipe", S_IRUSR | S_IWUSR); if (rc != 0) { perror("mkfifo failure"); exit(EXIT_FAILURE); } /* Open the FIFO for read. */ fifofd = open("named.pipe", O_RDONLY); if (fifofd < 0){ perror("open failure"); remove("named.pipe"); exit(EXIT_FAILURE); } rc = system("echo >named.pipe " "Talking to yourself is educational!"); if (rc != 0) { fprintf(stderr, "echo failed with status code %dn", rc); remove("named.pipe"); exit(EXIT_FAILURE); } rc = read(fifofd, input, _POSIX_PIPE_BUF); if (rc < 0) { perror("read failure"); remove("named.pipe"); exit(EXIT_FAILURE"); } puts("Something I just read:"); fwrite(input, 1, rc, stdout); /* Read input from the FIFO. */ close(fifofd); remove("named.pipe"); exit(EXIT_SUCCESS); }
creat
, mkdir
, mknod
, pipe
, umask
Copyright (c) 1998 SAS Institute Inc. Cary, NC, USA. All rights reserved.