명명된 파이프가 계속 수정되는 이유는 무엇입니까?

명명된 파이프가 계속 수정되는 이유는 무엇입니까?

다음과 같은 C 프로그램으로 생성된 명명된 fifo가 있습니다.

res = mkfifo("/home/myfolder/myfifo", 0666);

그 다음에는 읽기와 쓰기뿐이다.

이제 이 답변에서:명명된 파이프가 파일 시스템을 변경합니까?내 결론은 시스템이 실제로 파일 시스템의 실제 파일에 기록해서는 안 되며 모든 것이 RAM에서 처리된다는 것입니다.

프로그램을 다시 시작할 때마다 "mkfifo" 줄에서 "파일이 이미 존재합니다"라는 오류가 반환되는데, 이는 정상적인 현상입니다.
나를 괴롭히는 것은 파일을 "ls"할 때 "마지막 수정 날짜 시간"이 때때로 변경된다는 것입니다. 시스템이 실제로 파일에 쓰지 않으면 변경되지 않은 상태로 유지되어야 하지 않습니까?

답변1

파이프를 통해 전달된 데이터는 파일 시스템에 쓰거나 읽혀지지 않습니다. 명명된 파이프가 생성되면 생성된 디렉터리에서 연결할 수 있도록 inode가 할당되므로 이것이 형식입니다.파일 시스템 수정".

명명된 파이프에 액세스하면 inode의 액세스 시간이 업데이트되고 명명된 파이프에 쓰면 inode의 수정 시간이 업데이트되므로 파일 시스템도 이러한 간접적인 방식으로 수정됩니다. 이는 데이터가 파일 시스템에 기록된다는 의미가 아니라 데이터가 파일 시스템에 기록된다는 의미입니다. 이것이 Linux가 명명된 파이프에 대한 쓰기를 처리하는 방법입니다.

관련 정보