В Linux есть файл, /sys/kernel/debug/tracing/trace_pipe
, который, как говорится в названии, является трубой. Итак, позвольте сказать, что я хочу прочитать первые 50 байтов от него с помощью Python - и я запускаю следующий код:
$sudo python -c 'f=open("/sys/kernel/debug/tracing/trace_pipe","r"); print f; print f.read(50); f.close()<br>
<open file '/sys/kernel/debug/tracing/trace_pipe', mode 'r' at 0xb7757e90>
Мы видим, что открытие файла происходит быстро (если у нас есть права суперпользователя), однако, если в этот trace_pipe
файл trace_pipe
пуст, он просто блокирует (и даже если есть контент, содержимое будет сбрасываться до тех пор, пока не будет не более, а затем снова будет заблокирован файл). Затем мне нужно нажать Ctrl - C, чтобы прервать скрипт Python с помощью KeyboardInterrupt
...
Как я могу заставить Python 2.7 читать с таймаутом?
То есть, я хочу проинструктировать Python "попробовать прочитать 50 байтов из этого файла, если вам не удастся через одну секунду отказаться и вернуться"?