zadanie systemy operacyjne wątki

0

Ma ktoś pomysł jak rozwiązać takie zadanie ?

Napisać program komunikujący się poprzez dwa potoki nazwane z inną kopią tego samego programu. Program powinien działać na zasadzie programu talk(1). Jeden wątek będzie odpowiedzialny za pobieranie danych od użytkownika i wysyłanie ich do potoku wyjściowego, a drugi wątek będzie odbierał dane i wyświetlał je na standardowym wyjściu. Przykładowe wywołanie: ftalk -i /tmp/fifo.1 -o /tmp/fifo.2

4

Schemat działania:

  1. Sprawdzasz, czy już pliki oba istnieją. Jak nie, robisz mkfifo (przeczytaj manual).
  2. Zrób wątek na odbieranie wiadomości (pthread_create, podobnie jak wyżej, manual tłumaczy o co chodzi).
  3. W drugim wątku otwórz do czytania fifo wejściowe, w pierwszym wątku otwórz do pisania fifo wyjściowe. Otworzenie fifo blokuje do czasu aż ktoś nie połączy się po drugiej stronie.
  4. Czytaj w wątku czytającym dopóki się da, przekazuj na STDOUT. Czytaj z STDIN w wątku do wysyłania, przekazuj do fifo. Dopóki się da, czyli dopóki syscall read nie zwraca zera albo wartości ujemnej (która reprezentuje błąd).

To w zasadzie tyle. Jeszcze jakieś pthread_join się przydałoby.

1 użytkowników online, w tym zalogowanych: 0, gości: 1