通过管道/发送命令到 nohup 上运行的进程,该进程接受来自 STDIN 的输入

通过管道/发送命令到 nohup 上运行的进程,该进程接受来自 STDIN 的输入

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

这是在运行 bash 的 FreeBSD 上进行的。我也想看看在 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 暂停正在运行的进程、放弃它、将其关联到新的屏幕 shell 并取消暂停?;SE 网络上还有关于此主题的其他问题。)

相关内容