Nowe posty

Autor Wątek: [C] Komunikacja pomiędzy proceasami w systemie Unix.  (Przeczytany 4241 razy)

megotpelka

  • Gość
Witam.
Chciałbym uzyskać informacje jak korzystać z funkcji pipe(), by zapewnić komunikacje pomiędzy procesami. Zadanie które sobie postawiłem to komunikacja tylko pomiędzy procesem "matką" i procesem potomnym. Chodzi mi o coś w stylu: ustawienie pipe -> stworzenie procesu potomka fork() -> obliczenie w nim jakiegoś wyrażenia z danych przekazanych przez pipe -> zwrócenie wartości do procesu macierzystego.
Mile wdziane przykłady kodu.

ZipoKing

  • Gość
[C] Komunikacja pomiędzy proceasami w systemie Unix.
« Odpowiedź #1 dnia: 2010-03-16, 19:27:18 »
Więcej informacji tutaj: http://lmgtfy.com/?q=pipe+manpage

Ksanderon

  • Gość
[C] Komunikacja pomiędzy proceasami w systemie Unix.
« Odpowiedź #2 dnia: 2010-03-17, 12:05:44 »
int fd[2],BR;
char tekst[100];
pipe(fd);
if(fork()==0){
close(fd[0]);
write(fd[1],"jakis tekst\\0",12);
close(fd[1]);
}
else{
close(fd[1]);
BR=read(fd[0],tekst,100);
printf("%s,%d",tekst,BR);
close(fd[0])
}

tak to mniej więcej wygląda, operacje na fd są jak na normalnym pliku z tym, że fd[0] jest czytające, a fd[1] piszące. Jednak szczerze odradzam korzystania z PIPE i FIFO (potoki nazwane i nienazwane), ponieważ to rozwiązanie wydaje i się że jest powolne i nadużywane. lepiej raz dobrze nauczyć się korzystać z socketów i używać do wszystkiego :D