Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <sys/types.h>
- #include <sys/stat.h>
- #include <errno.h>
- #include <unistd.h>
- #include <stdlib.h>
- #include <stdio.h>
- #include <fcntl.h>
- #include <sys/wait.h>
- #define MAX 10
- void proc_m(char** argv, const char* moje_fifo){
- char buff[MAX];
- int file_deskryptor;
- int fifo_deskryptor;
- int read_save;
- if((file_deskryptor = open(argv[1],O_RDONLY,0666)) == -1){
- perror("error");
- exit(1);
- }
- if((fifo_deskryptor = open(moje_fifo,O_WRONLY,0666)) == -1){
- perror("error");
- exit(1);
- }
- while((read_save = read(file_deskryptor,buff,MAX)) > 0){
- if((write(moje_fifo,buff,MAX)) == -1){
- perror("error");
- exit(1);
- }
- printf("Czytam plik in:%s\n",buff);
- usleep(20000);
- }
- //obsluga błędów
- if(close(file_deskryptor) == -1){
- perror("error");
- exit(1);
- }
- if(close(fifo_deskryptor) == -1) {
- perror("error");
- exit(1);
- }
- wait(NULL); //czekanie na potomny
- }
- void proc_p(char** argv,const char* moje_fifo){
- char buff[MAX];
- int file_deskryptor;
- int fifo_deskryptor;
- int read_save;
- if((file_deskryptor = open(argv[2],O_CREAT | O_TRUNC | O_WRONLY,0666)) == -1){
- perror("error");
- exit(1);
- }
- if((fifo_deskryptor = open(moje_fifo,O_RDONLY,0666)) == -1){
- perror("error");
- exit(1);
- }
- while((read_save = read(fifo_deskryptor,buff,MAX)) > 0){
- if(write(file_deskryptor,buff,MAX) == -1)
- {
- perror("error");
- exit(1);
- }
- printf("Zapisywanie out: %s\n",buff);
- usleep(30000);
- }
- if(close(file) == -1){
- perror("error");
- exit(1);
- }
- if(close(fifo)==-1){
- perror("error");
- exit(1);
- }
- //odłączenie pliku od programu
- if(unlink(moje_fifo) == -1){
- perror("error");
- exit(1);
- }
- }
- int main(int argc, char*argv[]){
- if(argc!=3){
- printf("Podaj właściwą ilość argumentów\n");
- exit(1);
- }
- //stały wskaźnik na ścieżkę do pliku
- const char *moje_fifo="./moje_fifo";
- if(mkfifo(moje_fifo,0666) == -1){ //obsługa błędów, ponieważ mkfifo nie zadziała jeśli już istnieje dany plik
- perror("error");
- exit(1);
- }
- switch(fork()){
- case(-1):
- {
- perror("error");
- exit(1);
- break;
- }
- case(0):
- {
- potomny(argv,moje_fifo);
- break;
- }
- default:
- {
- macierzysty(argv,moje_fifo);
- system("md5sum in out");
- break;
- }
- }
- return(0);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement