gpt4 book ai didi

linux - 如何监控 FIFO?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:37:50 25 4
gpt4 key购买 nike

我想通过设置该流量的只读终端窗口来理想地调试两个进程之间的问题。我可以简单地使用现有的标准 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

reader-process &

# and in another terminal
cat > /run/myfifo

当你需要一起调试写入器和读取器时,你可以使用 Daniel Schepler 推荐的 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

关于linux - 如何监控 FIFO?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46498213/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com