Czy jest ktos w stanie pomoc mi w tym programie
Opracować zestaw programów typu producent - konsument realizujących przy
wykorzystaniu mechanizmu łączy komunikacyjnych (pipes), następujący schemat
komunikacji międzyprocesowej:
Proces 1: czyta dane (pojedyncze wiersze) ze standardowego strumienia
wejściowego i przekazuje je w niezmienionej formie do procesu 2.
Proces 2: pobiera dane przesłane przez proces 1. Oblicza ilość znaków w
każdej linii i wyznaczoną liczbę przekazuje do procesu 3.
Proces 3: pobiera dane wyprodukowane przez proces 2 i umieszcza je w
standardowym strumieniu wyjściowym. Każda odebrana jednostka danych powinna
zostać wyprowadzona w osobnym wierszu.
Należy zaproponować i zaimplementować mechanizm informowania się procesów o
swoim stanie. Należy wykorzystać do tego dostępny mechanizm sygnałów,
semaforów i pamięci dzielonej. Wszystkie trzy procesy powinny być powoływane
automatycznie z jednego procesu inicjującego.
Udało mi zrealizowac 2 procesy , ale nie wiem jak powolac ten trzeci ktory
ma wyswetlic wynik
Marcin
Opracować zestaw programów typu producent - konsument realizujących przy
wykorzystaniu mechanizmu łączy komunikacyjnych (pipes), następujący schemat
komunikacji międzyprocesowej:
Proces 1: czyta dane (pojedyncze wiersze) ze standardowego strumienia
wejściowego i przekazuje je w niezmienionej formie do procesu 2.
Proces 2: pobiera dane przesłane przez proces 1. Oblicza ilość znaków w
każdej linii i wyznaczoną liczbę przekazuje do procesu 3.
Proces 3: pobiera dane wyprodukowane przez proces 2 i umieszcza je w
standardowym strumieniu wyjściowym. Każda odebrana jednostka danych powinna
zostać wyprowadzona w osobnym wierszu.
Należy zaproponować i zaimplementować mechanizm informowania się procesów o
swoim stanie. Należy wykorzystać do tego dostępny mechanizm sygnałów,
semaforów i pamięci dzielonej. Wszystkie trzy procesy powinny być powoływane
automatycznie z jednego procesu inicjującego.
Udało mi zrealizowac 2 procesy , ale nie wiem jak powolac ten trzeci ktory
ma wyswetlic wynik
#include <stdio.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
int main(void)
{
int pipes[2], nbytes,a;
pid_t POTOMEK;
char licz[10];
char readbuffer[80];
pipe(pipes);
if((POTOMEK = fork()) == -1)
{
perror("fork");
return 0;
}
if(POTOMEK == 0)
{
/* zamykam do pisania */
close(pipes[0]);
printf("Wpisz tekst: ");
scanf("%s",licz);
write(pipes[1], licz, sizeof(licz));
printf("Wysylam do P2 tekst : %s\n\n",licz);
return 0;
}
else
{
/* zamykam dla czytania */
close(pipes[1]);
nbytes = read(pipes[0], readbuffer, sizeof(readbuffer));
a=strlen(readbuffer);
printf("Obliczam i wysylam wynik do P3: %d ten wynik pwinien wyswietlic w
P3\n", a);
}
}Marcin