UNIXではnohupを使ってプロセスを実行したいと思います。ただし、このプロセスはメッセージが表示されるのを待つことがあるため、そのプロセスに入るか続行するのをyes
待つno
必要があります。これまでUNIXでは、次のことを行いました。
nohup myprocess <<EOF
y
EOF
そのため、nohupを使用して「myprocess」プロセスを開始し、「y」を使用してファイルをパイプしてからファイルを閉じます。上記の行は実際には3つの個別のコマンドです。つまり、UNIX の最初の行で Enter キーを押してからメッセージが表示されたら、「y」と入力し、Enter キーを押し、最後に「EOF」と入力して Enter キーをもう一度押します。だからこれは完璧に動作しますが、私の質問は次のとおりです。
このコマンドをPerlで実行したいのですが、3行以上なので、どうすればいいかわかりません。次がうまくいくかわかりません。
my $startprocess = `nohup myprocess <<EOF &
y
EOF
`
答え1
y
プロセスの標準入力への単一の書き込みのみが必要な場合は、次のことができます。
(echo y | nohup myprocess) &
y
表示されるすべてのプロンプトに対して何度も書きたい場合は、coreutilはyes
まさにその目的のために存在します。つまり、ユーザーが話している内容を標準出力に記録し続けます。デフォルトは「y」を出力することなので、次のことができます。
(yes | nohup myprocess) &
ただし、他のものが必要な場合はパラメータとして渡すことができます。