trace_pipe 它们是什么/它是文件还是某种我可以打开并读写的通道 |什么是 Linux trace

trace_pipe what are they/ is it file or some kind of channel that I can open and read and write to it | And what are Linux trace

所以我有这个代码

所以我想知道这是什么trace_fd = open(DEBUGFS "trace_pipe", O_RDONLY, 0);它看起来像阅读痕迹但什么是痕迹所以开始告诉我一些关于痕迹的事情,我能读到任何痕迹/那里有多少痕迹。如果我在跟踪管道上写,那么写系统调用中的另一端是什么。所以我对单词跟踪感到非常困惑,更不用说下面写到 trace_pipe 的简单代码了。我可以创建自己的轨迹吗?如何以及请告诉我这个

void read_trace_pipe(void)
{
    int trace_fd;

    trace_fd = open(DEBUGFS "trace_pipe", O_RDONLY, 0);
    if (trace_fd < 0)
        return;

    while (1) {
        static char buf[4096];
        ssize_t sz;

        sz = read(trace_fd, buf, sizeof(buf) - 1);
        if (sz > 0) {
            buf[sz] = 0;
            puts(buf);
        }
    }
}

DEBUGFS 这里是一个定义(可能)为包含目录名称的字符串文字的宏,因此这只是在该目录中打开一个名为 trace_pipe 的文件并读取它。这可能只是一个普通文件,也可能是某人创建的某种命名管道。

这不是任何标准的东西,与 strace 或 systrace 无关 -- 它可能只是这个应用程序设置的东西。 "trace_pipe" 只是一个文件名。要理解它,您真的需要知道 DEBUGFS 的定义是什么,以及谁在该目录中创建了东西。