안타깝게도 stdin에서 직접 데이터를 받아들이지 않는 파이프 라인에 대한 입력을 즉석에서 사전 처리하는 편리한 방법으로 명명 된 파이프를 사용하려고합니다.
어디서나 나는 정보를 찾는다. 기본적으로 같은 요점을 갖는다. 명명 된 파이프는 사용하기 쉽도록 죽어야한다.
요점은 대부분 다음과 같이 작동해야합니다 :
mkfifo mynamedpipe
echo "is this working?" > mynamedpipe
cat mynamedpipe
내가 달릴 때. mkfifo mynamedpipe
, 파이프가 성공적으로 만들어져 표시됩니다. ls *
.
하지만 내가 파이프를 쓸 수 있도록 허용 한 후에도 echo "whatever" > mynamedpipe
아무 일도 일어나지 않고 터미널을 멈추게 할 때까지 ctrl+c
.
내 로컬 리눅스 머신 (Ubuntu 14.04.5 LTS)뿐만 아니라 공개 서버 (Red Hat Enterprise Linux 7)와 zsh 및 bash에서이 문제가 발생합니다.
여기서 내가 뭘 잘못하고 있니?
나를 위해 물건을 지워 줘서 고마워. 그러나이 문제에 대한 거의 모든 자습서 (또는 적어도 가장 눈에 띄는 Google 히트 곡)가 위에 게시 된 기본 단계를 정확하게 설명하고 문제를 해결하지 않고도 "있는 그대로"작업해야한다는 것은 귀찮은 일입니다. 최근에 바뀐 것입니까?
—
jov14
cat < mynamedpipe
. 이 따옴표를 참고하십시오. linuxjournal.com/article/2156 : "주의 깊게 살펴보면, 실행중인 첫 번째 명령이 멈춘 것처럼 보입니다. 이것은 파이프의 다른 쪽 끝이 아직 연결되지 않았기 때문에 발생하며, 커널은 두 번째 프로세스가 파이프를 열 때까지 첫 번째 프로세스를 일시 중단합니다. 유닉스 전문 용어로는 프로세스가 "대기"상태라고한다.