previne o acesso ao sistema de arquivos enquanto passa informações de e para programas [fechados]

1

Eu escrevi um script principal que chama um programa do sistema dezenas de milhares de vezes. O script principal cria e fornece a este programa um arquivo de entrada em cada chamada. Após a conclusão, o programa cria um arquivo de saída que é lido pelo script principal. O programa é executado com: program inputFile outputFile

O script principal está sendo executado lentamente, e acredito que isso se deva à grande sobrecarga de I / 0 incorrida durante a execução de program .

É possível executar este programa sem escrever ou ler no disco?

Observe que inputFile e outputFile podem conter várias linhas. Os internos do programa podem ser alterados, mas eu preferiria não fazer isso. Infelizmente não consegui encontrar conselhos relevantes em outros lugares.

    
por richnis 05.08.2014 / 22:30

1 resposta

1

Pode depender do que o seu script está fazendo com a saída do program . Se você está fazendo algo complicado que requer o processamento do arquivo várias vezes, você pode estar sem sorte. (Vamos chamar isso de "ponto zero".)

Primeiro, verifique se o programa pode ser contado, direta e inequivocamente, para gravar sua saída na saída padrão em vez de um arquivo nomeado. Alguns programas interpretam um argumento de apenas um traço ( - ) significa entrada padrão ou saída padrão, conforme apropriado. Então tente

program inputFile - | your processing

Em segundo lugar, tente o mesmo com /dev/stdout como o nome do arquivo de saída:

program inputFile /dev/stdout | your processing

Em terceiro lugar, tente um pipe nomeado:

myFifo=$(mktemp)
program inputFile "$myFifo" &
your processing < "$myFifo"
rm "$myFifo"
    
por 05.08.2014 / 23:58

Tags