Linux中管道的非阻塞读取

Linux中管道的非阻塞读取,linux,pipe,ftrace,Linux,Pipe,Ftrace,我想使用Linux命令行工具以非阻塞方式阅读/sys/kernel/debug/tracing/trace_pipe。例如,cat无法使用,因为它将被阻止。这与类似,不同的是我不想使用Python。非阻塞的概念不适用于命令行工具。但是,您可以在后台运行cat的实例,方法是在调用后附加一个符号,如下所示: cat /sys/kernel/debug/tracing/trace_pipe & 现在,命令立即返回,并且每次从文件中读取一行时,它都会被打印到终端(并且会弄乱您键入的内容) 如果

我想使用Linux命令行工具以非阻塞方式阅读
/sys/kernel/debug/tracing/trace_pipe
。例如,
cat
无法使用,因为它将被阻止。这与类似,不同的是我不想使用Python。

非阻塞的概念不适用于命令行工具。但是,您可以在后台运行
cat
的实例,方法是在调用后附加一个符号,如下所示:

cat /sys/kernel/debug/tracing/trace_pipe &
现在,命令立即返回,并且每次从文件中读取一行时,它都会被打印到终端(并且会弄乱您键入的内容)


如果文件本身没有阻塞,您也可以使用
tail-F

我从来没有听说过这样的shell命令。如果您不想使用Python,那么Perl呢?如果有任何C语言解决方案,我都可以。程序应该读取当前在
trace_pipe
中的任何内容并返回。如果它是空的,它应该立即完全是空的。这确实是一个解决方案,但是,我想每秒对
trace\u pipe
进行采样。您的方法增加了系统负载,这对于我的用例来说是不可取的。这与
cat
相同:如果希望命令在后台运行,请在调用结束时添加
&
。这不会增加系统负载,就像正常运行一样。