Tenho dois programas de cooperação. Um programa apenas grava sua saída em um arquivo e o outro lê o arquivo e cospe os dados para o front-end trabalhar.
Tenho lido sobre pipes nomeados e soquetes de domínio, mas estou tendo problemas para ver quais vantagens eles oferecem ao usar apenas um arquivo temporário. Parece apenas uma forma formal de comunicação comigo.
Responder1
- Se você precisar salvar o arquivo intermediário após a conclusão do processamento, a comunicação entre processos (como por meio de um tubo ou soquete) não será particularmente valiosa. Da mesma forma, se você precisar executar os dois programas em momentos muito diferentes, faça-o da maneira que está fazendo agora.
Na época em que o Unix foi criado, os discos eram muito pequenos e era comum que um comando bastante benigno consumisse todo o espaço livre em um sistema de arquivos. Por exemplo,
algum_comando_que_produz_a_muito_de_saída| grepalguma_muito_obscura_string
produz uma saída que émuitomenor que o tamanho da saída do primeiro comando (ou seja, o tamanho do arquivo intermediário que seria criado se você executasse os comandos da mesma forma que executa seus programas).
Os dados que fluem através de pipes e soquetes (provavelmente) não são gravados no disco. Portanto, essas soluções IPC podem ser
- mais eficiente (mais rápido) do que soluções baseadas em disco.
- mais seguras do que soluções baseadas em disco, se os dados intermediários forem mais sensíveis que o resultado final.