Forum Linux.pl

System => Administracja => Wątek zaczęty przez: w 2010-02-27, 15:18:24

Tytuł: Wysyłanie komendy na stdin do procesu na bg
Wiadomość wysłana przez: w 2010-02-27, 15:18:24
Witam! Jeżeli nie trafiłem z działem, to przepraszam.
Mam pytanie:
uruchamian program poprzez:
nohup ./djkajdksdajsd & echo $!

czy jest szansa, znając PID, aby wpisać coś na stdin tego programu. Zależy mi także, aby można to było zrobić przez jedną komendę a nie jakiś interactive mode.

szukam czegoś co miałoby postać: echo 'data' | send 8765
lub send 8765 'data'.

Pozdrawiam, i proszę o wyrozumiałość, peku33
Tytuł: Wysyłanie komendy na stdin do procesu na bg
Wiadomość wysłana przez: Paweł Kraszewski w 2010-02-27, 20:55:25
Masz 2 drogi:

1. Nie sprawdzone, na moje oko niezbyt pewne - w katalogu /proc/$PID/fd masz deskryptory plików połączonych z procesem. Pierwsze 3 to OIDP kolejność odpowiednio stdin, stdout i stderr. Nie jestem pewien, czy da się coś "wstrzelić" do takiego deskryptora tak, żeby aplikacja to zassała.

2. "The right way": tworzysz nazwany potok za pomocą mkfifo, odpalasz aplikację tak, aby zasysała z tego potoku a potem sobie wrzucasz tam dane skąd tam chcesz.
mkfifo /tmp/kontrolka
nohup ./djkajdksdajsd < /tmp/kontrolka & echo $!
a potem skądkolwiek
echo "data" > /tmp/kontrolka
Tytuł: Wysyłanie komendy na stdin do procesu na bg
Wiadomość wysłana przez: w 2010-02-27, 23:07:55
Dzięki wielkie. Metoda 2 zadziałała!
Tego szukałem. Temat do zamknięcia.
Nie ma tu czegoś jak karma?