只需将此添加为注释,以获得更好的格式:
@Alfe对我的回答是:$ sudo python -c 'import os, select;
f=open("/sys/kernel/debug/tracing/trace_pipe","r"); print f;
rrdy, wrdy, xrdy = select.select([f], [], [], 1); print rrdy, wrdy, xrdy ;
timeout= "timed out" if (rrdy==[]) else "" ;
print timeout;
print os.read(f.fileno(), 50) if timeout=="" else "";
f.close() '
如果文件中有什么内容,我会得到如下响应:
[] [] []
Xorg-1033 [001] 12570.075859:
如果文件中没有任何内容,我会得到:
[] [] []
timed out
注意,^{}文档并没有明确指出timeout参数以秒为单位,但是浮点值(例如0.5)也可以工作。
@GabiMe的回答:$ sudo python -c 'import os;
filno = os.open("/sys/kernel/debug/tracing/trace_pipe", os.O_RDONLY|os.O_NONBLOCK);
f=os.fdopen(filno, "r"); print f;
print "A", f.read(50);
print "B", os.read(f.fileno(), 50);
f.close() '
如果文件中有什么内容,我会得到如下响应:', mode 'r' at 0xb77b6e90>
A bash-13777 [000] 13694.404519: sys_exi
B Timer-31065 [001] 13694.404830: sys_exi
如果文件中没有任何内容,我会得到:', mode 'r' at 0xb77c1e90>
A
Traceback (most recent call last):
File "", line 1, in
IOError: [Errno 11] Resource temporarily unavailable
。。。因此,必须在try块中运行此命令,才能捕获IOError,如果文件中没有任何内容。。。(无论是os.read还是f.read都将引发此异常)