Nowe posty

Autor Wątek: Wysyłanie komendy na stdin do procesu na bg  (Przeczytany 4072 razy)

  • Gość
Wysyłanie komendy na stdin do procesu na bg
« dnia: 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

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 3059
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
Wysyłanie komendy na stdin do procesu na bg
« Odpowiedź #1 dnia: 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
Paweł Kraszewski
~Arch/Void/Gentoo/FreeBSD/OpenBSD/Specjalizowane customy

  • Gość
Wysyłanie komendy na stdin do procesu na bg
« Odpowiedź #2 dnia: 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?