Como eu dou uma entrada para um programa que roda infinitamente? [fechadas]

0

Eu tenho um programa python que roda infinitamente, recebe uma entrada e gera uma saída. Eu quero escrever um programa bash que fornece uma entrada enquanto o script python está sendo executado. Então, como eu dou uma entrada para o programa enquanto o programa está rodando?

    
por user163131 28.03.2016 / 16:33

1 resposta

1

Uma maneira fácil é usar um pipe nomeado:

# Choosing a unique, secure name for the pipe left as an exercise
PIPE=/tmp/feed-data-to-program

# Create the named pipe
mkfifo "$PIPE"
# Start the Python program in the background
myprogram <"$PIPE" &
# Now grab an open handle to write the pipe
exec 3>"$PIPE"
# And we don't need to refer to the pipe by name anymore
rm -f "$PIPE"

# Later, the shell script does other work,...
# ...possibly in a loop?
while :; do
    ...
    ...
    # Now I've got something to send to the background program
    echo foo >&3
    ...
    ...
done

Seria bom evitar a necessidade de uma entrada temporária no sistema de arquivos, e eu sei que alguns shells como zsh fornecem uma maneira de fazer isso, mas eu não sei de um modo portátil.

    
por 28.03.2016 / 16:42

Tags