我有一个可以从commonand行运行的应用程序,它对我来说就像一个CLI。
但是它是应用程序套件的一部分,现在我希望它们全部在启动时运行,因此它们将作为服务(系统化)启动。
因此,包括CLI在内的所有我的应用程序都运行良好。但是我看不到CLI的输出,也无法向它发送命令。
我当时正在使用stdout打印CLI屏幕-我想我可以通过输出到文件来解决此问题-但可以访问其stdout很好。更大的问题是我无法写入其标准输入。
我读到以下内容:writing-to-stdin-of-background-process并尝试进行echo -e "command\n" > /proc/.../0
,但是什么都没发生-我检查了CLI的日志(被写入文件),但没有得到输入。
然后我在ls -l
上进行了/proc/<pid>/fd/
的操作,我注意到0 --> /dev/null
的意思是stdin链接到/ dev / null。
那么,如何获得其stdin?
奖金问题-有没有一种操作方法(在同一bash shell中),这样我可以将stdin重定向到该进程的stdin并将进程stdout重定向到我的shell?
答案 0 :(得分:1)
找到要重定向的终端(pty)。 pty0重定向的示例可以通过以下方式完成:
exec < /dev/pty0 #stdin
exec > /dev/pty0 #stdout