2

Unix では、nohup を使用して実行したいプロセスがあります。ただし、このプロセスは、ある時点で、入力する必要があるyesno、続行する必要があるプロンプトで待機します。これまでのところ、Unixでは次のことを行ってきました

nohup myprocess <<EOF
y
EOF

したがって、nohup を使用してプロセス「myprocess」を開始し、「y」を使用してファイルにパイプし、ファイルを閉じます。上記の行は事実上 3 つの別個のコマンドです。つまり、UNIX の最初の行で Enter キーを押すと、プロンプトが表示され、「y」と入力してから Enter キーを押し、最後に「EOF」と入力して、もう一度 Return キーを押します。

これを Perl で実行する方法を知りたいのですが、このコマンドは 3 行を超えるため、どのように実行できるかわかりません。以下がうまくいくかどうかはわかりません....

my $startprocess = `nohup myprocess <<EOF &
y
EOF
`

助けてください - ありがとう!

4

2 に答える 2

5

あなたの提案はそのまま機能すると思います。そうでない場合は、リダイレクトをパイプに置き換えてみてください。

my $startprocess = `(echo "y" | nohup myprocess) &`;

また、 を実行している理由に応じてnohup、次の純粋な Perl デーモン化アプローチを参照してくださいProc::DaemonLinux で Perl スクリプトをシステム デーモンとして実行するにはどうすればよいですか

于 2010-10-01T01:15:17.733 に答える
2

インタラクティブなプログラムも同様に使用できます。

于 2010-10-01T01:29:48.657 に答える