다른 프로세스가 쓰기 작업을 수행 할 때 명명 된 파이프를 만들었으므로 다른 프로세스가 올바르게 시작되었지만 PID를 모르고 있는지 확인하려고합니다. 컨텍스트는 running a command in screen이며 명령이 올바르게 시작되었는지 확인하십시오. 나는이 작동하지 않을 수 있습니다 기대했다 :명명 된 파이프/FIFO가 쓰기 용으로 열려 있는지 확인하십시오.
mkfifo /tmp/foo
echo hello > /tmp/foo &
lsof /tmp/foo
슬프게도, lsof
이 echo
를보고하지 않습니다. inotifywait
은 다른 옵션 일 수도 있지만 항상 설치되는 것은 아니며 일부 이벤트가 발생할 때까지 차단하기보다는 한 번 폴링하고 싶습니다.
명명 된 파이프가 쓰기 위해 열려 있는지 확인할 방법이 있습니까? 일반적으로 열려 있니?
UPDATE : 양쪽 끝이 연결되면
는 lsof
가 작동하는 것 같다. 이것은 실제로 내 문제를 해결하지만 질문을 위해서 독자가없는 명명 된 파이프에 대한 초기 리디렉션을 감지 할 수 있는지 알고 싶습니다.
> mkfifo /tmp/foo
> yes > /tmp/foo &
> lsof /tmp/foo
> cat /tmp/foo > /dev/null &
> lsof /tmp/foo
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
yes 16915 user 1w FIFO 8,18 0t0 16660270 /tmp/foo
cat 16950 user 3r FIFO 8,18 0t0 16660270 /tmp/foo
"쓰기 용으로 열기"라고 말하면 읽을 수있는 데이터가 있다는 것을 의미합니까? 쓰기가 불가능한 FIFO가 무엇입니까? – Fred
당신이 찾고있는 대답이 아니지만, .pid 파일을 쓸 수도 있습니다. – teppic
@Fred 질문이 이해가 안된다고 생각하면 "글쓰기를위한 열기"가 잘못된 용어 일 수 있습니다. 필자는 명명 된 파이프로 리디렉션되는 프로세스를 나열하는 것이 이상적입니다. 나는. 'mkfifo' 다음에 아무것도 없으면 목록은 비어 있어야합니다. 그런 다음'yes>/tmp/foo' 다음에 목록에서'yes'의 PID를보아야합니다. – jozxyqk