2

次のコードがあります。

cmd cmd_args & WAIT_PID=$!

trap "kill -s SIGTERM $WAIT_PID" SIGTERM SIGINT SIGKILL

wait $WAIT_PID

これにより、誰かがこのスクリプトを強制終了しようとするたびに、バックグラウンド プロセスを強制終了できるようにしたいと考えています。ただし、標準入力をバックグラウンド プロセスにリダイレクトしたいのですが、これは行われていません。

待機の stdin を取得して、バックグラウンド プロセスにリダイレクトしたいと思います。そのために、私は試しました:

wait $WAIT_PID 0>&1 1> named_pipe

しかし、運がなければ。

4

1 に答える 1

2

前述のように、SIGKILL(またはSIGSTOP) をトラップすることはできません。

それ以外は、これを試してください:

#!/bin/bash
cmd cmd_args <&0 &
wait_pid=$!
trap "kill -s SIGTERM $wait_pid" SIGTERM SIGINT
wait $wait_pid

のstdin をスクリプトの stdin にし<&0たいことを bash に伝えます。cmd

/proc少し話題から外れますが、バイトを実行中のプロセスの stdin にダンプする別の興味深い方法は、次のようにファイル記述子に直接送信することです。

echo "Stuff to send to the process" >/proc/$wait_pid/fd/0
于 2013-07-17T15:35:08.650 に答える