2014-11-27 5 views
0

Я хотел бы читать /sys/kernel/debug/tracing/trace_pipe неблокируемым способом с помощью средств командной строки Linux. Например, cat не может использоваться, поскольку он будет заблокирован. Это похоже на this, с той разницей, что я не хочу использовать Python.Неблокирующее чтение из трубы в Linux

+0

Я никогда не слышал о команде оболочки, которая делает это. – Barmar

+0

Если вы не хотите использовать Python, как насчет Perl? – Barmar

+0

Я в порядке, если есть какое-либо решение на языке C. Программа должна читать все, что находится внутри 'trace_pipe', и возвращает. Если он пуст, он должен сразу же появиться. – Javad

ответ

1

Концепция «неблокирование» не применяется к инструментам командной строки. Тем не менее, вы можете запустить экземпляр cat в фоновом режиме, добавляя амперсанд к вызову, например, так:

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

Теперь команда возвращает немедленно, и каждый раз, когда строка читается из файла, он получает печатается на терминал (и испортит все, что вы набираете).

Вы также можете использовать tail -F, если сам файл не блокируется.

+0

Это действительно решение, однако я хотел бы пробовать 'trace_pipe' каждую секунду. Ваш подход увеличивает загрузку системы, что нежелательно для моего использования. – Javad

+0

Я попробовал 'tail -F'. Он блокирует. – Javad

+0

Это то же самое, что и с 'cat': если вы хотите, чтобы команда выполнялась в фоновом режиме, добавьте' & 'в конце вызова. Это не должно увеличивать нагрузку на систему, чем обычная работа. – user3426575

Смежные вопросы