Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <unistd.h>
- #include <stdio.h>
- #include <errno.h>
- #include <string.h>
- #include <sys/types.h>
- #include <sys/wait.h>
- #include <errno.h>
- #define MESSAGE_SIZE 100
- extern int errno;
- char file_name[20];
- void parent_process(int pipefd[]){
- char message[MESSAGE_SIZE];
- if(close(pipefd[1]) < 0)
- perror("parent - close write");
- if(read(pipefd[0], message, sizeof(message)) < 0)
- perror("read");
- printf("\nOdebrana wiadomosc:\t\t%s\n", message);
- if(close(pipefd[0]) < 0)
- perror("parent - close read");
- wait(0);
- }
- void child_process(int pipefd[], char file_name[]){
- char message[MESSAGE_SIZE];
- if(close(pipefd[0]) < 0)
- perror("close read - child");
- int errnum;
- FILE *file = fopen(file_name, "r");
- if(file == NULL){
- errnum = errno;
- strcpy(message, strerror(errnum));
- } else {
- fread(message, sizeof(char), sizeof(message), file);
- }
- printf("Wiadomosc do przekazania:\t%s", message);
- if(write(pipefd[1], message, strlen(message)) < 0)
- perror("child - write content");
- fclose(file);
- exit(0);
- }
- int main(){
- int pipefd[2];
- if(pipe(pipefd)<0)
- perror("pipe");
- printf("Podaj nazwe pliku: ");
- scanf("%s", file_name);
- int pid = fork();
- if(pid == -1)
- perror("fork");
- if(pid == 0)
- child_process(pipefd, file_name);
- else
- parent_process(pipefd);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement