我有一个由第三方开发的与终端通信的 Linux 进程。对于调试,我希望看到通信返回。
有人可能会认为cat
可以解决问题(看到一个方向):
./third-party-app &
cat /dev/tty
...但事实并非如此。相反,cat
会窃取一半用于应用程序的数据,这几乎毫无价值。
third-party-app 被硬编码为假设/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 运行。