透過管道/發送命令來處理在 nohup 上運行並接受來自 STDIN 的輸入

透過管道/發送命令來處理在 nohup 上運行並接受來自 STDIN 的輸入

我有一個使用 運行的程式nohup program &。該程式接受來自的輸入STDIN。有什麼方法可以將文字發送到STDIN正在運行的程式nohup嗎?

這是在 FreeBSD 上運行 bash。我也想看看在 Linux 上這是如何完成的。

答案1

nohup使用重定向的標準輸入運行程序/dev/null(假設您沒有重定向nohup命令本身)。所以不,您不能將輸入發送到該程式。

如果要將輸入傳送到程序,請在啟動程序時重定向輸入:

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

(實際上,可以透過使用,即偵錯器或其他駭客,將程式的標準輸入重新連接到另一個來源ptrace。如果程式追蹤其輸入的來源,則可能會導致程式崩潰。請參閱如何透過 ssh 暫停正在運行的進程、否認它、將其關聯到新的 screen shell 並取消暫停?; SE 網路上還有其他關於此主題的問題。

相關內容