FIFO가 존재하는 경우에만 쓰기

FIFO가 존재하는 경우에만 쓰기

FIFO에 쓰는 대부분의 예는 echo또는 cat명령을 사용하고 stdout을 파일로 리디렉션하는 것을 말합니다. 예를 들어,

echo 'a' > /tmp/my_fifo

그러나 FIFO가 아직 존재하지 않는 경우 일반 파일이 생성됩니다. mkfifo이와 비슷하지만 존재하지 않으면 글쓰기가 실패하게 만드는 것이 있나요 ? 즉, 다음과 같습니다.

echo 'a' | write-to-existing-file /tmp/my_fifo

답변1

BASH 매뉴얼에 따르면:

-p file
   True if file exists and is a named pipe (FIFO).

그래서:

if [[ -p /tmp/my_fifo ]]; then
    # commands to execute
fi

질문에는 라벨이 있습니다.세게 때리다. 맥락에서 [[및 사용법은 ]]BASH에만 적용됩니다. (접선적으로 zsh 및 Korn 쉘 [[]]사용할 수 있습니다.)배쉬 FAQ/031. 모든 POSIX 셸에서 실행되는 [이식 가능한 스크립트를 사용하고 작성 해야 합니다 .]

관련 정보