Nowe posty

Autor Wątek: Rozpoznawanie czy dany proces czeka na dane z danego deskryptora  (Przeczytany 3921 razy)

Offline

  • Users
  • Stały bywalec
  • ***
  • Wiadomości: 111
    • Zobacz profil
Mój program tworzy pseudoterminal, a na końcówce slave ustawiam proces potomny. Chciałbym, by proces rodzic(ojciec) mógł rozpoznać, kiedy proces dziecko czeka na otrzymanie danych z pseudoterminala, czyli czyta ze swojego standardowego wejścia. Chciałbym w takim momencie wywołać jakieś zdarzenie przed wysłaniem mu danych(powiedzmy, że takowe dane pobrać ;-) ).

Obecnie myślałem, by obserwować końcówkę slave w podobny sposób, jak robi to inotify-tools. Jest to jednak brzydki hack. Czy nie ma bardziej przejrzystego i łatwego rozwiązania?

ZipoKing

  • Gość
Rozpoznawanie czy dany proces czeka na dane z danego deskryptora
« Odpowiedź #1 dnia: 2009-08-23, 12:06:59 »
Standardowo w Linuksie każdy proces "żyje swoim własnym życiem" i nie ma za bardzo możliwości ingerencji w to co robi inny proces (w tym inwigilacja czy czeka na jakieś dane). Najlepszym rozwiązaniem byłoby zaimplementowanie komunikacji pomiędzy tymi procesami (np. z pomocą DBus lub jakiegoś innego mechanizmu) aby np. w ten sposób slave informował o chęci pobrania danych.

Offline

  • Users
  • Stały bywalec
  • ***
  • Wiadomości: 111
    • Zobacz profil
Rozpoznawanie czy dany proces czeka na dane z danego deskryptora
« Odpowiedź #2 dnia: 2009-08-23, 19:52:26 »
Tak się zastanawiam nad wykorzystaniem czegoś innego niż pseudoterminal. Potoki nazwane? Sokety?

Offline

  • Users
  • Stały bywalec
  • ***
  • Wiadomości: 111
    • Zobacz profil
Rozpoznawanie czy dany proces czeka na dane z danego deskryptora
« Odpowiedź #3 dnia: 2009-08-23, 19:54:05 »
Jest oczywiście możliwość śledzenia czy proces nie jest zatrzymany. Skąd jednak mam wiedzieć czy to z powodu chęci odczytu z podanego miejsca(poza wykorzystaniem mechanizmu watchdogu czy podobnego).

Offline

  • Users
  • Stały bywalec
  • ***
  • Wiadomości: 111
    • Zobacz profil
Rozpoznawanie czy dany proces czeka na dane z danego deskryptora
« Odpowiedź #4 dnia: 2009-08-24, 20:12:44 »
http://en.wikipedia.org/wiki/SIGTTIN

Jest jakiś proces, by przechwytywać/odbierać sygnały kierowane do procesu dziecka(np. kiedy jesteśmy procesem kontrolnym terminala).