【发布时间】:2010-08-04 22:24:27
【问题描述】:
我有一个由第三方开发的与终端通信的 Linux 进程。对于调试,我希望看到通信返回。
有人可能会认为cat 可以解决问题(看到一个方向):
./third-party-app &
cat /dev/tty
...但事实并非如此。相反,cat 将窃取一半用于应用程序的数据,这几乎毫无价值。
第三方应用被硬编码为/dev/tty。
我发现监视通信的一种方法是将/dev/tty 设备重命名为/dev/real_tty,并在其位置创建一个名为/dev/tty 的命名管道。然后运行:
cat /dev/real_tty | tee /dev/tty &
...至少可以让我看到/dev/real_tty 的输出,方法是将数据从/dev/real_tty 复制到命名管道/dev/tty 和stdout。
这种方法很有效,但感觉很狡猾,并且依赖于更换设备的诡计。它也不能双向工作,因为命名管道只能在一个方向上传输数据。
这样做的正确方法是什么?
如果有人想知道,TTY 设备是与微控制器的 RS-232 链接。该信息不敏感或不安全。所有进程(应用程序和间谍)都可以以 root 身份运行。
【问题讨论】:
标签: linux terminal embedded-linux tty pty