管道/发送命令以处理在 nohup 上运行的进程,该进程接受来自 STDIN 的输入

viv*_*vin 4 nohup pipe

我有一个使用nohup program &. 该程序接受来自 的输入STDIN。有没有办法将文本发送到STDIN正在运行的程序的nohup

这是在运行 bash 的 FreeBSD 上。我也想看看这是如何在 linux 上完成的。

Gil*_*il' 7

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
Run Code Online (Sandbox Code Playgroud)

(实际上,可以通过使用ptrace,即调试器或其他黑客将程序的标准输入重新连接到另一个源。如果它跟踪其输入的来源,这可能会使程序崩溃。请参阅如何暂停正在运行的程序通过 ssh 处理,否认它,将其关联到新的屏幕外壳并取消暂停?;SE 网络上还有关于此主题的其他问题。)