Que métodos existem para capturar stdout em um buffer que é automaticamente limpo em leitura?

0

Eu quero armazenar o stdout de um processo em um buffer e ter o buffer esvaziado uma vez lido, no estilo FIFO.

Eu sei que posso canalizar o stdout, mas o pipe / arquivo continuará crescendo e conterá dados que eu já li. Eu só quero os dados novos.

command > named_pipe &

Existe algum outro método inerente, semelhante a um buffer em um soquete de rede, para o qual eu possa redirecionar os dados?

    
por matt.baker 13.02.2018 / 16:07

1 resposta

1

Eu não entendo como pipes nomeados não resolvem seu problema. Este exemplo usa duas interfaces de shell, shell_1 e shell_2 . Recuo I / O de / para shell_2 mais que shell_1 para tentar diferenciar o que I / O está ocorrendo de qual shell.

$ mkfifo my_pipe
(shell_1) $ echo hi > my_pipe # Blocks waiting for a reader
    (shell_2) $ cat my_pipe # Unblocks shell_1
    hi
    (shell_2) $ cat my_pipe # blocks -- does not print "hi" again
(shell_1) $ echo bye > my_pipe # Unblocks shell_2
    bye # Printed by shell_2
    
por 13.02.2018 / 16:33

Tags