Kirim perintah pipa / kirim ke proses yang berjalan pada nohup yang menerima input dari STDIN

4

Saya memiliki program yang saya jalankan nohup program &. Program ini menerima input dari STDIN. Apakah ada cara untuk mengirim teks ke STDINprogram yang sedang berjalan melalui nohup?

Ini ada di FreeBSD menjalankan bash. Saya ingin melihat bagaimana hal ini dilakukan di linux juga.

vivin
sumber
Linux (yang)? Unix (yang)? OS X? AmigaOS? Mungkin tidak ada salahnya untuk mengatakan shell yang mana. Pesta? Maksud? Korn? C? Z? Ikan?
Dennis Williamson
Maaf soal itu. Memperbarui pertanyaan.
vivin

Jawaban:

7

nohupmenjalankan program dengan input standar yang dialihkan /dev/null(dengan asumsi Anda tidak mengarahkan ulang nohupperintah itu sendiri). Jadi tidak, Anda tidak dapat mengirim input ke program ini.

Jika Anda ingin mengirim input ke program, arahkan ulang input saat Anda memulainya:

nohup program <input-file.txt &  # input from a file
nohup data-producer | nohup program &  # input from another program
mkfifo program.pipe; nohup program <program.pipe &  # input from a named pipe, feed it what you want later

(Sebenarnya, dimungkinkan untuk menyambungkan kembali input standar program ke sumber lain, dengan menggunakan ptrace, yaitu debugger atau peretasan lainnya. Ini dapat membuat crash program jika melacak dari mana inputnya berasal. Lihat Bagaimana saya dapat menghentikan sementara suatu proses proses over ssh, disown itu, kaitkan ke shell layar baru dan batalkan jeda itu?; ada pertanyaan lain di jaringan SE tentang topik ini.)

Gilles
sumber
Bukankah produsen data akan terbunuh?
wliao
1
@wliao Memang. Saya telah menambahkan nohupdi depannya juga, terima kasih.
Gilles