In UNIX, ho un processo che voglio eseguire usando nohup. Tuttavia, questo processo a un certo punto attenderà una richiesta in cui devo inserire yes
o no
perché continui. Finora, in UNIX ho fatto quanto segue:
nohup myprocess <<EOF
y
EOF
Quindi avvio il processo "myprocess" usando nohup e pipe in un file con "y", quindi chiudo il file. Le righe sopra sono effettivamente tre comandi separati, ovvero premo invio sulla prima riga in UNIX, quindi ricevo un messaggio in cui inserisco "y" e quindi premo invio per infine digitare "EOF" e premere nuovamente Invio. Quindi funziona perfettamente, ma il mio problema è di seguito.
Voglio ora eseguirlo in Perl, ma non sono sicuro di come eseguire questo comando, poiché è su tre righe. Non so se funzionerà quanto segue:
my $startprocess = `nohup myprocess <<EOF &
y
EOF
`
Risposta accettata:
Se vuoi solo scrivere un singolo y
allo stdin del processo, puoi farlo:
(echo y | nohup myprocess) &
Se vuoi continuare a scrivere y
per ogni prompt che viene visualizzato, coreutil yes
esiste esattamente per questo scopo:continuerà a scrivere qualunque cosa gli dici a stdout. L'impostazione predefinita è "y", quindi puoi semplicemente:
(yes | nohup myprocess) &
ma se hai bisogno di qualcos'altro puoi passarlo come argomento