親 perl スクリプトから [system(Start コマンド) を使用して] 新しい独立した Perl スクリプトを開始しています。子スクリプトの PID を 1 つのファイルに書き込み、それを親スクリプトで読み取って、子プロセスを終了したいときはいつでもその PID を使用して簡単に強制終了できるようにします。
しかし、子スクリプトから子プロセス ex system("somebatchfile) を使用して別のバッチ ファイルを呼び出しています。ここで PID が変更され、バッチ ファイルが作業を終了するまで閉じることができません。PID を取得できません。 fork 関数を使用してみましたが、とにかくバッチ ファイルを呼び出すと、独自の別の PID が作成されます。
私のコードは次のとおりです。
親スクリプト: 新しいスクリプトを開始し、PID を読み取り、必要に応じて開始されたスクリプトを強制終了します。
子スクリプト:
open(PID,">PID_Value.txt");
print PID "\$Process_id=$$"; # write the PID of child script
close(PID);
system("somebatch file name"); # I am using Windows 7