내가 이해한 바로는 명명된 파이프는 디스크에 기록되지 않고 메모리에 저장됩니다. 이것이 명명된 파이프를 만드는 방법입니다.
$ mkfifo pipe21
$ grep "simple" SimpleDoc.txt > pipe21 &
[1] 2775
$ cat pipe21
Very simple doc that contains plaintext.
[1]+ Done grep --color=auto "simple" SimpleDoc.txt > pipe21
그 후 시스템을 다시 시작했습니다. 그러나 재부팅한 후에도 현재 디렉터리에 여전히 파이프라인21이 표시됩니다. 왜 그런 겁니까?
답변1
명명된 파이프는 파일 시스템의 일부입니다. 파일 이름이 있는 모든 항목은 파일 시스템의 일부입니다. 이것이 영구 저장소(예: 디스크)의 파일 시스템인 경우 시스템 재부팅 후에도 유지됩니다.
명명된 파이프의 파일 시스템 항목에는 이름, 일반적인 메타데이터(시간, 권한 등) 및 "이것은 명명된 파이프입니다"라는 플래그만 있습니다. 파이프를 통과하는 데이터는 파일 시스템에 입력되지 않습니다. 그러나 명명된 파이프 자체는 파일 시스템에 있습니다.
답변2
아니요, 디스크에 기록됩니다. 이 명령은 mkfifo pipe21
파일 시스템에 해당 장치를 생성합니다. 일반적으로 이러한 장치는 이 디렉터리에 보관되지만 /dev
명명된 파이프(FIFOS라고도 함)를 반드시 이 디렉터리에 저장할 필요는 없습니다.
Wikipedia 기사에서 발췌
명명된 파이프는 다른 파일과 마찬가지로 삭제할 수 있습니다.
$ rm my_pipe
예
선입선출 방식을 만듭니다.
$ pwd
/home/saml
$ mkfifo pipe21
FIFO 장치를 확인하십시오.
$ ls -l | grep pipe
prw-rw-r-- 1 saml saml 0 Jul 24 12:22 pipe21
$ file pipe21
pipe21: fifo (named pipe)
장치를 제거:
$ rm pipe21
$ ls -l | grep pipe