Di UNIX, saya memiliki proses yang ingin saya jalankan menggunakan nohup. Namun, proses ini pada titik tertentu akan menunggu di prompt di mana saya harus memasukkan yes
atau no
untuk itu untuk melanjutkan. Sejauh ini, di UNIX saya telah melakukan hal berikut:
nohup myprocess <<EOF
y
EOF
Jadi saya memulai proses 'myprocess' menggunakan nohup dan pipa di file dengan 'y' lalu tutup file. Baris di atas secara efektif adalah tiga perintah terpisah – yaitu saya menekan enter pada baris pertama di UNIX, lalu saya mendapatkan prompt di mana saya memasukkan 'y' dan kemudian tekan enter untuk akhirnya ketik 'EOF' dan tekan kembali lagi. Jadi ini berfungsi dengan baik, tetapi masalah saya ada di bawah.
Sekarang saya ingin menjalankan ini di Perl, tetapi saya tidak yakin bagaimana saya bisa menjalankan perintah ini, karena lebih dari tiga baris. Saya tidak tahu apakah yang berikut ini akan berhasil:
my $startprocess = `nohup myprocess <<EOF &
y
EOF
`
Jawaban yang Diterima:
Jika Anda hanya ingin menulis satu y
ke stdin proses, Anda dapat melakukan ini:
(echo y | nohup myprocess) &
Jika Anda ingin terus menulis y
untuk setiap prompt yang muncul, coreutil yes
ada untuk tujuan ini — itu akan terus menulis apa pun yang Anda perintahkan ke stdout. Standarnya adalah untuk menampilkan “y”, jadi Anda cukup:
(yes | nohup myprocess) &
tetapi jika Anda membutuhkan sesuatu yang lain, Anda dapat meneruskannya sebagai argumen