2014-11-27 3 views
0

리눅스 명령 행 도구를 사용하여 논 블로킹 방식으로 /sys/kernel/debug/tracing/trace_pipe을 읽고 싶습니다. 예를 들어 cat은 차단되므로 사용할 수 없습니다. 이것은 this과 비슷하지만 파이썬을 사용하고 싶지 않다는 차이점이 있습니다.리눅스에서 비 블로킹 읽기

+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