Sous UNIX, j'ai un processus que je veux exécuter en utilisant nohup. Cependant, ce processus attendra à un moment donné à une invite où je dois entrer yes
ou no
pour que ça continue. Jusqu'à présent, sous UNIX, j'ai fait ce qui suit :
nohup myprocess <<EOF
y
EOF
Donc, je démarre le processus 'myprocess' en utilisant nohup et pipe dans un fichier avec 'y' puis ferme le fichier. Les lignes ci-dessus sont en fait trois commandes distinctes - c'est-à-dire que j'appuie sur Entrée sur la première ligne sous UNIX, puis j'obtiens une invite dans laquelle j'entre "y", puis j'appuie sur Entrée pour enfin taper "EOF" et appuyer à nouveau sur Entrée. Cela fonctionne donc parfaitement, mais mon problème est ci-dessous.
Je veux maintenant exécuter ceci en Perl, mais je ne sais pas comment je peux exécuter cette commande, car elle est sur trois lignes. Je ne sais pas si ce qui suit fonctionnera :
my $startprocess = `nohup myprocess <<EOF &
y
EOF
`
Réponse acceptée :
Si vous voulez juste écrire un seul y
au stdin du processus, vous pouvez faire ceci :
(echo y | nohup myprocess) &
Si vous voulez continuer à écrire y
pour chaque invite qui apparaît, le coreutil yes
existe exactement dans ce but - il continuera à écrire tout ce que vous lui direz sur stdout. Sa sortie par défaut est "y", donc vous pouvez simplement :
(yes | nohup myprocess) &
mais si vous avez besoin d'autre chose, vous pouvez le passer en argument