我想通过设置该流量的只读终端窗口来调试两个进程之间的问题。我可以简单地使用现有的标准 Linux 实用程序来实现这一点吗?
FIFO 位于/run/myfifo
并在其中一个进程中创建:
/* Create a FIFO if one doesn't already exist */
int createFifo(char *filepath) {
if (access(path, F_OK) == -1) {
return mkfifo(filepath, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);
}
return 0;
}
tail -F /run/myfifo
?
如何监控有多种选择。我希望你有两个过程。一个过程是向 fifo 写入,另一个过程是读取。
如果您需要分别调试读取器和写入器,那么您可以使用像这样的简单程序cat
.
writer-process
# and in another terminal
cat /run/myfifo
or
reader-process &
# and in another terminal
cat > /run/myfifo
当您需要一起调试编写器和读取器时,您可以使用strace
丹尼尔·谢普勒推荐的。 strace 可以与您的程序一起运行,并且日志输出将重定向到另一个终端/dev/pts/4
在这种情况下。
strace -e read -s 999 reader-process 2> /dev/pts/4
该命令记录来自所有文件描述符的所有读取调用。如果您只想过滤从管道读取的内容,则必须识别 fifo 文件描述符并 grep 输出。
如果 strace 不是一个选项,您可能可以强制读取器和写入器使用不同的 fifo 名称,然后在记录传输数据的程序中连接这两个 fifo。这种连接器最简单的变体可以是像这样的脚本
cat < /run/mywritefifo | tee /dev/tty > /run/myreadfifo
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)