Por que meu pipe nomeado continua sendo modificado?

5

Eu tenho um fifo nomeado criado a partir de um programa em C como este:

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

depois disso, há apenas leituras e gravações.

Agora, a partir desta resposta: Um pipe nomeado altera o sistema de arquivos Eu concluí que o sistema praticamente nunca deveria realmente escrever no arquivo real no sistema de arquivos, e que tudo é tratado na RAM.

Sempre que eu reinicio meu programa, a linha "mkfifo" retorna um erro "Arquivo já existe", o que é OK.
O que me incomoda é que quando eu "ls" o arquivo, a "data da última modificação" às vezes muda. Se o sistema nunca realmente gravar no arquivo, ele não deve permanecer constante?

    
por Nitkov 04.12.2014 / 11:05

1 resposta

5

Os dados que passam pelo pipe não são gravados ou lidos para e do sistema de arquivos. Ao criar o pipe nomeado, um inode é alocado para que possa ser vinculado a partir do diretório em que você o criou; então é uma forma de " modificar o sistema de arquivos ".

Acessar o pipe nomeado atualizará o tempo de acesso do inode, gravar no pipe nomeado atualizará o tempo de modificação do inode, portanto, dessa maneira indireta, o sistema de arquivos também está sendo modificado. Isso não significa que os dados sejam gravados no sistema de arquivos; é exatamente como o Linux trata as gravações em um pipe nomeado.

    
por 04.12.2014 / 11:40