Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- gcc -Wall -o fifo fifo.c
- params=""
- while [ $1 ]; do
- params="$params $1"
- done
- ./fifo $params
- wait $!
- sleep 0.1
- echo
- #include <sys/types.h>
- #include <sys/stat.h>
- #include <unistd.h>
- #include <stdio.h>
- #include <fcntl.h>
- #include <string.h>
- #define BUFFER 50
- int main()
- {
- char *myfifo = "mojefifo";
- mkfifo(myfifo, 0666);
- int fd;
- if(fork() == 0) {
- fd = open(myfifo, O_RDONLY);
- char buffer[BUFFER];
- int pid = getpid();
- ssize_t bytes_read;
- while((bytes_read = read(fd, buffer, BUFFER-1)) > 0)
- {
- buffer[bytes_read] = '\0';
- printf("Proces %d odczytal: %s\n", pid, buffer);
- sleep(0.02);
- }
- close(fd);
- unlink(myfifo);
- } else if(fork() == 0) {
- fd = open(myfifo, O_RDONLY);
- char buffer[BUFFER];
- int pid = getpid();
- ssize_t bytes_read;
- while((bytes_read = read(fd, buffer, BUFFER-1)) > 0)
- {
- buffer[bytes_read] = '\0';
- printf("Proces %d odczytal: %s\n", pid, buffer);
- sleep(0.02);
- }
- close(fd);
- unlink(myfifo);
- } else {
- fd = open(myfifo, O_WRONLY);
- char buffer[200];
- ssize_t n;
- while((n=read(STDIN_FILENO, buffer, 200)) > 0){
- write(fd, buffer, n);}//printf("%s", buffer);}
- close(fd);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement