【问题标题】:Nonblocking read from a pipe in Linux在 Linux 中从管道中进行非阻塞读取
【发布时间】:2015-01-25 13:09:07
【问题描述】:

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

【问题讨论】:

  • 我从来没有听说过这样的shell命令。
  • 如果你不想用 Python,Perl 怎么样?
  • 如果有任何C语言解决方案我很好。该程序应该读取当前在trace_pipe 中的任何内容并返回。如果它是空的,它应该立即相当。

标签: linux pipe ftrace


【解决方案1】:

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

cat /sys/kernel/debug/tracing/trace_pipe &

现在,命令立即返回,每次从文件中读取一行时,它都会打印到终端(并且会打乱您输入的任何内容)。

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

【讨论】:

  • 这确实是一个解决方案,但是,我想每秒采样一次trace_pipe。您的方法增加了系统负载,这对我的用例来说是不可取的。
  • cat一样:如果你想让命令在后台运行,在调用的最后加上&。与以正常方式运行相比,这不会增加系统负载。
猜你喜欢
  • 2011-04-15
  • 1970-01-01
  • 2014-11-17
  • 2016-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-27
相关资源
最近更新 更多