Witam mam następujące zadanie:
ĆWICZENIE 4: Producent - Konsument: potoki nienazwane
Zaimplementować problem "producenta i konsumenta" przy pomocy programu, który:
Tworzy nienazwany potok do komunikacji między procesem głównym (producentem) a procesem potomnym (konsumentem)
Producent przesyła fragmentami zawartość pliku tekstowego do potoku
Konsument odczytuje zawartość potoku i zapisuje do innego pliku tekstowegoPo zakończeniu działania programu plik wejściowy i plik wyjściowy powinny być identyczne.
ĆWICZENIE 5: Producent - Konsument: potoki nazwane
Zaimplementować problem z ćwiczenia czwartego, tworząc dwa niezależne programy - producenta i konsumenta.
Komunikacja między programami przebiegać będzie przez potoki nazwane, tworząc potok FIFO:
Z linii komend
Z poziomu programu
Z ćwiczeniem 4 sobie poradziłem. Ale nie moge sobie dać rady z 5.
Otóż mam takie dwa pliki:
1.c
#include<stdio.h>
#include<fcntl.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<stdlib.h>
int main()
{
mkfifo("potok", 0777); //stworzenie potoku
FILE *we = fopen("in.txt","r");
char odczyt[100]; char bufor[2];
int i=0;
while(fgets(bufor,2,we)) {if(feof(stdin))break;odczyt[i]=bufor[0];i++;} odczyt[i]=0;
printf("Odczyt z pliku zapis do potoku FIFO:\n %s\n",odczyt);
int out=open("potok",O_WRONLY | O_CREAT | O_TRUNC);
write(out,odczyt,i);
printf("Tadam\n");
return 0;
}
2.c
#include<stdio.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include<cstdio>
using namespace std;
int main()
{
char zapis[100]; char bufor[2]; int i=0;
int in = open("potok",O_RDONLY);
FILE *wy = fopen("out.txt","w");
while(read(in,bufor,1)){zapis[i]=bufor[0];i++;} zapis[i]=0;
fputs(zapis,wy);
printf("Przeczytane z potoku i wpisane do pliku!");
return 0;
}
//PRZEROBIĆ NA PĘTLE!!!!!!! (dowolną ilość bajtów niech wczytuje :>)
co mam zrobić z tym dalej naprawde nie mam pojęcia bo kompiluje mi sie ale program niechce sie zakończyć:)