我有一个可以从公共(public)线路运行的应用程序,它对我来说就像一个 CLI。
但是它是一套应用程序的一部分,现在我希望它们全部在启动时运行,因此它们作为服务(systemd)启动。
所以我的所有应用程序(包括 CLI)都运行良好。但是我看不到 CLI 的输出,也无法向其发送命令。
我正在使用标准输出来打印 CLI 屏幕 - 我想我可以通过输出到文件来解决这个问题 - 但最好能够访问其标准输出。更大的问题是我无法写入其标准输入。
我读到了这个:writing-to-stdin-of-background-process并试图 echo -e "command\n" > /proc/.../0
,但什么也没发生 - 我检查了 CLI 的日志(写入文件),但没有收到输入。
然后我做了一个 ls -l
上/proc/<pid>/fd/
我注意到 0 --> /dev/null
意味着 stdin 链接到/dev/null。
那么,我怎样才能访问它的标准输入呢?
额外问题 - 有没有一种方法可以进行操作(在同一个 bash shell 中),以便我将我的 stdin 重定向到该进程的 stdin 并将进程 stdout 重定向到我的 shell?
最佳答案
找到您要重定向的终端 (pty)。 pty0 重定向示例可以通过以下方式完成:
exec < /dev/pty0 #stdin
exec > /dev/pty0 #stdout
关于linux - bash linux - 从标准输入和标准输出写入和读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55627726/