Como um arquivo temporário difere de um pipe? [duplicado]

1

Quando alguém envia dados (digamos stdout ) para um arquivo temporário, é provável que algo seja feito com esses dados (o arquivo temporário será usado como stdin para algum processo), então o arquivo temporário será ser eliminado.

Um canal é uma variante dos arquivos especiais , que podem encadear comandos juntos; passando a saída de um programa, como a entrada de outro.

Geralmente, um pipe regular seria destruído logo após o processo, mas um pipe nomeado (geralmente chamado, e não necessariamente 100% preciso, "FIFO"), permanecerá ativo após o processo terminar, até um certo ponto. / p>

Minha pergunta

É provável que um arquivo temporário seja excluído após o uso e um canal nomeado não, mas qual é a diferença entre um arquivo temporário e um canal em geral, ou pelo menos um canal anônimo?

Atualizar

Eu estava errado em pensar que um "arquivo temporário" é um arquivo especial, não é; É um arquivo regular que apenas sendo usado de forma diferente ; Eu diria que um pipe difere no sentido de que ele é definido como um arquivo especial e tem um único propósito estreito (encadeamento), enquanto um arquivo temporário pode ter outros usos além do encadeamento, mas pode ser uma maneira mais "total" de descrever a diferença.

    
por user9303970 11.04.2018 / 12:01

1 resposta

1

Um pipe nomeado pode ser temporário no mesmo sentido que um arquivo regular (ou uma conexão de rede ou qualquer outra coisa que forneça um "identificador" de dados) pode ser temporário, isto é, pode ser configurado por um script para facilitar alguns tipo de processamento e, em seguida, excluído antes do script sair. Seria então um "pipe temporário (nomeado)".

Um pipe nomeado é um arquivo e, portanto, pode-se argumentar que o pipe nomeado (que é de fato temporário) é um arquivo temporário.

No entanto, quando as pessoas se referem a um "arquivo", quase sempre se referem a um "arquivo regular" (ou seja, um documento de alguma descrição), e um pipe nomeado não é um arquivo regular. / p>

Um pipe no shell, configurado com | para fornecer um fluxo de dados de um utilitário para outro, é temporário no sentido de que o shell desalocará todos os recursos relacionados a ele quando tiver sido usado e não for mais necessário.

No final, os pipes (nomeados e não nomeados) e os arquivos regulares têm aplicativos diferentes, e deve ficar claro quando um arquivo regular é usado para armazenar dados temporários e quando um pipe nomeado é usado para passar dados para outro processo.

    
por 11.04.2018 / 16:06