명명된 파이프를 생성한 다음 이를 읽고 쓰는 경우 명명된 파이프가 있는 파일 시스템이 영향을 받습니까? 즉, 데이터를 읽기 전에 파일 시스템에 버퍼링합니까, 아니면 메모리에만 상주합니까?
답변1
파일 객체 자체는 파일 시스템에 생성되지만 파일 시스템에는 데이터가 저장되지 않습니다. mkpipe(3) 맨페이지에서:
A FIFO special file is similar to a pipe, except that it is created in
a different way. Instead of being an anonymous communications channel,
a FIFO special file is entered into the file system by calling
mkfifo().
데이터가 디스크에 저장될 수 있는 유일한 시간은 메모리가 스왑 공간(버퍼 포함)에 기록되는 최대 절전 모드 동안이지만 이는 특별한 경우일 뿐입니다.
답변2
아니요. 명명된 파이프에 쓰면 파일 시스템이 수정되지 않습니다(액세스 시간 제외).
다음은 데모입니다:
$ mkdir test
$ mkdir test-ro
$ mkfifo test/fifo
$ mount --bind test test-ro
$ mount -o remount,ro test-ro
$ cat test/fifo & echo something >> test/fifo
something
보시다시피, 읽기 전용 파일 시스템에 있더라도 fifo에 쓸 수 있습니다.
명명된 파이프는 파일 시스템에 파이프 데이터를 저장하지 않습니다. 해당 데이터는 파일 시스템 버퍼와 별도로 메모리에 버퍼링됩니다.