Vantagens de usar pipes nomeados e soquetes em vez de arquivos temporários

3

Eu tenho dois programas cooperativos. Um programa simplesmente grava sua saída em um arquivo e o outro lê a partir do arquivo e envia os dados para o front-end para trabalhar.

Eu tenho lido sobre pipes nomeados e soquetes de domínio, mas estou tendo problemas para ver quais vantagens eles oferecem apenas usando um arquivo temporário. Parece apenas uma maneira formal de se comunicar comigo.

    
por Luke 16.10.2014 / 18:12

1 resposta

3
  1. Se você precisar salvar o arquivo intermediário após o processamento, então comunicação entre processos (como através de um tubo ou soquete) não é particularmente valioso. Da mesma forma, se você precisar executar os dois programas em alturas muito diferentes, você deveria fazer do jeito que você está fazendo agora.
  2. Quando o Unix foi criado, os discos eram muito pequenos, e era comum um comando bastante benigno para consumir todo o espaço livre em um sistema de arquivos. Por exemplo,

    some_command_that_produces_a_lot_of_output | grep some_very_obscure_string

    produz uma saída muito menor que o tamanho da saída do primeiro comando (isto é, o tamanho do arquivo intermediário que seria criado se você executou os comandos do jeito que você está executando seus programas).

  3. O fluxo de dados através de pipes e soquetes (provavelmente) não é gravado no disco. Portanto, essas soluções de IPC podem ser

    • mais eficiente (mais rápido) do que as soluções baseadas em disco.
    • mais seguro que as soluções baseadas em disco, se os dados intermediários forem mais sensíveis que o resultado final.
por 17.10.2014 / 01:16