Komunikacja FIFO

0

Cześć, chciałbym w programie wykorzystać do komunikacji między procesami łącze FIFO. Dodatkowo mam przykładowy kod takiego programu.
Chciałem jednak sam to napisać. I teraz jak zrobiłem po swojemu to nie działa, więc coraz więcej kodu brałem z przykładu. I teraz mam kod, który wygląda praktycznie tak samo jak ten w przykładzie a nie chce działać. Może ktoś na forum jest bardziej spostrzegawczy i podpowie co robię źle.

Kod przykładu który działa:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/stat.h>


void client(){
    FILE *fp;
    char string[100];
    
    
    while(1){
        fp = fopen("my_fifo", "r");
        fgets(string, 100, fp);
        printf("Otrzymalem: %s\n\n", string);
        fclose(fp);
    }
}

void server(){
    FILE *fp;
    char string[100];
    
    while(1){
        fp = fopen("my_fifo", "w");
        fprintf(stdout, "Podaj ciag znakow: ");
        scanf("%s", string);
        fputs(string, fp);
        fclose(fp);
        sleep(1);
    }
}

int main(void){
        
    umask(0);
    mkfifo("my_fifo", 0666); 
    if(fork()){
        server(); 
    }else{
        client();
    }
    
    return 0;
}
 

Mój kod:

 #include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/stat.h>


void fifo_reader() {
      
    FILE *file;
    char bufor[100];
    
    while(1) {
        file = fopen("my_fifo", "r");       
        fgets(bufor, 100, file);
        printf("Otrzymalem: %s", bufor);
        fclose(file);
    }
}

void fifo_writer() {
    
    FILE *file;
    char bufor[100];
    
    while(1) {       
        file = fopen("my_fifo", "w");        
        fprintf(stdout, "Podaj ciag znakow: ");
        scanf("%s", bufor);
        fputs(bufor, file);
        fclose(file);
        sleep(1);       
    }
}

int main(void) {

    umask(0);
	mkfifo("my_fifo", 0666);
        
    if (fork()) {
        fifo_writer();
    }
    else {  
        fifo_reader(); 
    }
    
    
    return 0;
}

0
printf("Otrzymalem: %s\n", bufor);

lub printf("Otrzymalem: %s", bufor);
fflush(stdout);

0

Dzięki wielkie! :D Już wiem o co chodzi

1 użytkowników online, w tym zalogowanych: 0, gości: 1