Witam!
Mam do napisania taki oto program:
"W systemie są dwa bufory cykliczne b1 i b2. Procesy P1, ..., Pn produkują cyklicznie, niezależnie od siebie, porcje informacji i wstawiają je do bufora b1. Proces S pobiera porcje z bufora b1 i przetwarza je na jedną porcję wstawianą do bufora b2. Proces K czeka na całkowite wypełnienie bufora b2 po czym konsumuje cały bufor na raz. "
Nie wiem jaką koncepcję tu zastosować. Czy potoki, czy fifo, ktoś doradzał mi żeby to zrobić na "czytelników i pisarzy". Macie jakieś pomysły?
Bo na razie wygląda to dość nieciekawie:
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
char b1 [250];
char b2 [250];
int NUM=5;
char tekst[] = {"12345"};
int main()
{
int i;
pid_t child_pid[NUM],childpid_S,childpid_K;
for(i=0;i<NUM;i++)
{
child_pid[i] = fork();
if (child_pid[i] == 0)
{
printf("Wykonuje proces P[%d] \n",i);
for(i=0;i<5;i++)
{
sprintf(b1[i],"%c",tekst[i]);
printf("%c",b1[i]);
}
}
}
//childpid_S = fork();
if((childpid_S =fork())== 0)
{
printf("Wykonuje proces S \n");
sprintf(b2,"%c",b1);
printf("",b2);
}
exit(childpid_S);
//childpid_K = fork();
if((childpid_K=fork()) == 0)
{
printf("Proces K czysci bufor! \n");
}
exit(childpid_K);
return 0;