我有一个使用 运行的程序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 网络上还有关于此主题的其他问题。)