myFuncを使用して呼び出された無限ループ機能を停止する方法&

myFuncを使用して呼び出された無限ループ機能を停止する方法&

私のBashスクリプトには、無限ループで特定のタスクを実行する関数があります。コードの次の部分を同時に実行するにはmyFunc &

プログラムの残りの部分が完了したら、この機能をどのように終了しますか?

答え1

いくつかのオプションがあります。これが唯一のバックグラウンドプロセスであれば、簡単に終了できます。

kill %1

サブシェルのPIDを保存できます。

myFunc &
myFunc_PID=$!
[...]
kill -HUP "$myFunc_PID"

また、使用することができます

kill %myFunc

EXITハンドラにサブシェル出口を置くのは合理的です。

trap 'kill %myFunc' EXIT

関連情報