Wpis z mikrobloga

Szanowni koledzy z #programowanie
Czy możecie mi pomóc z zadaniem:
z #linux i #cpp ?
Otóż:
Mam napisać dwa programy, które komunikują się ze sobą za pomocą łączy:

program łącze1 łącze2

Każdy z programów otwiera łącza lub tworzy je, jeśli nie istnieją. Procesy odczytują wiadomości z terminala (standardowe wejście stdin) oraz z łącza. Wiadomości odczytane z terminala przesyłane są przez łącze do drugiego procesu. Wiadomości odczytane z łącza są wyświetlane na terminalu (standardowe wyjście stdout). Zalecane jest wykorzystanie funkcji select().
Czy ktoś może pomóc mi napisać kod takiego programu?
Czy należy wykorzystać łącza nazwane czy nienazwane?

Z góry dziękuję za każdą okazaną pomoc.
  • 10
  • Odpowiedz
@Polaszkino: chodzi o pipe?
unnamed pipe (nienazwane łącze argh) służy głównie do komunikacji między forkowanymi procesami pochodzącymi od jednego parenta, nie jak uruchamiasz oba programy osobno. W sumie dało by się tego użyć, ale trzeba by się bawić w sockety i ogólnie to bez sensu. Także zdecydowanie named pipe.

Co do selecta to z tego co widzę w dokumentacji (http://man7.org/linux/man-pages/man2/select.2.html) musisz
1. stworzyć sobie strukturkę fd_set (makro FD_ZERO)
2. dodać do niej deskryptory (twoje łącze i
  • Odpowiedz
@piwniczny_prawiczek: sam nie wiedziałem o co tu chodzi, musiałem google użyć XD chyba nikt normalny nie korzysta z polskich nazw w tej materii, życie życiem, a polskie uczelnie, polskimi uczelniami. Imho polskie tłumaczenia tylko niepotrzebny mętlik robią, angielskie są dużo bardziej sugestywne i jaśniejsze
  • Odpowiedz
@Polaszkino: jak nie wiesz jak to możesz małymi krokami: np. najpierw napisz program który czyta wejście z terminala (stdin) i wypisuje na wyjście (stdout), potem zmień żeby używać read i write, potem spróbuj stworzyć named pipe i wysłać cokolwiek do innego programu... wtedy jest dużo łatwiej i niekoniecznie wolniej bo i tak musisz to wszystko napisać, a wiadomo o co pytać jak coś nie działa
  • Odpowiedz