Witam,
Mam za zadanie stworzyć potok fifo w pierwszym progrmanie i następnie przesłać przez ten potok tekst do 2 programu.
Stworzyłem coś takiego:

1 program(tworzy potok):

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>

int main()
{
    const int dlugosc = 12;
    char tablica[6];
    
    FILE *f = fopen("zrodlo", "r");
    mkfifo("potok", 0600);
    FILE *g = fopen("potok", "w");
    
    fgets(tablica, dlugosc, f);
    
    printf("Tablica: %s\n", tablica);
    
    write(g, tablica, dlugosc);
    
    close(g);
    close(f);
} 

2 program(czyta potok):

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>

int main()
{
  const int dlugosc = 12;
  char tablica[6];

  FILE *h = fopen("potok", "r");
  FILE *i = fopen("zapis", "w");

  fgets(tablica, dlugosc, h);

  printf("Tablica: %s\n", tablica);

  write(i, tablica, dlugosc);
  close(h);
  close(i);
} 

Potok się tworzy i wszystko jest fajnie, ale wygląda na to, że 1 program nic do niego nie zapisuje. Czy mam użyc innej funkcji do zapisu niz write? Czy gdzieś zrobiłem jakiś głupi błąd? Czy w ogóle moja koncepcja programu jest zła?