linux - bash linux - 从标准输入和标准输出写入和读取

标签 linux bash stdout stdin

我有一个可以从公共(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/

相关文章:

linux - 安装 Windows 10 后如何安装 grub

linux - 无法使用 key 文件

linux - 在不挂载的情况下将文件添加到 VFAT 镜像

bash在目录中创建文件,仅知道部分目录名称

c编程理解strace -o t.txt ./a.out

objective-c - Linux 上的 Swift Objective-C 互操作性,错误 : 'Foundation/Foundation.h' file not found

linux - 如何找到文件中特定行的字节位置

linux - 检查脚本中的差异退出状态

shell - 检查 PEAR 版本

python - 将标准输出(打印)命令打印到扩展名为 .pyw 的 tkinter 窗口