【小技】LAUNCH EXTERNAL PROCESSにタイムアウトを設定する
【小技】LAUNCH EXTERNAL PROCESSにタイムアウトを設定する
LAUNCH EXTERNAL PROCESSは,外部プログラムを起動するコマンドです。
外部プログラムは,非同期(プログラムを起動した後,直ちに制御が4Dに戻る)または同期(プログラムが終了するまで4Dが待機する)モードで起動することができます。
しかし,問題は外部プログラムがいつまでも制御を返さないケースです。
15R4では,コマンドが拡張され,起動したプログラムのプロセス番号が受け取れるようになりました。
LAUNCH EXTERNAL PROCESS (filename {;inputStream {;outputStream {;errorStream{;pid}}}})
http://doc.4d.com/4Dv15R5/4D/15-R5/LAUNCH-EXTERNAL-PROCESS.301-2937739.ja.html
以前は「起動したプログラムのプロセス番号を調べるためのプログラムを起動」する必要がありました。
プロセス番号が判明していれば,外部プログラムを強制的に終了することもできます。
一方,一定時間内に制御を戻さないプログラムを単純に終了するだけであれば,v16の「タイムアウト」機能を使用することもできます。
これは,自動化された退行テストなど,起動したプログラムがハングすることが(ある程度)予期されている場合に有効です。
タイムアウトは,既存の環境変数「_4D_OPTION_BLOCKING_EXTERNAL_PROCESS」に数値を渡すことにより,設定することができます。
タイムアウトに達した外部プロセス,および子プロセスはすべて強制的に終了させられます。
注記:この機能はドキュメントに含まれない予定です。
http://doc.4d.com/4Dv15R5/4D/15-R5/SET-ENVIRONMENT-VARIABLE.301-2937743.ja.html
外部プログラムは,非同期(プログラムを起動した後,直ちに制御が4Dに戻る)または同期(プログラムが終了するまで4Dが待機する)モードで起動することができます。
しかし,問題は外部プログラムがいつまでも制御を返さないケースです。
15R4では,コマンドが拡張され,起動したプログラムのプロセス番号が受け取れるようになりました。
LAUNCH EXTERNAL PROCESS (filename {;inputStream {;outputStream {;errorStream{;pid}}}})
http://doc.4d.com/4Dv15R5/4D/15-R5/LAUNCH-EXTERNAL-PROCESS.301-2937739.ja.html
以前は「起動したプログラムのプロセス番号を調べるためのプログラムを起動」する必要がありました。
プロセス番号が判明していれば,外部プログラムを強制的に終了することもできます。
一方,一定時間内に制御を戻さないプログラムを単純に終了するだけであれば,v16の「タイムアウト」機能を使用することもできます。
これは,自動化された退行テストなど,起動したプログラムがハングすることが(ある程度)予期されている場合に有効です。
タイムアウトは,既存の環境変数「_4D_OPTION_BLOCKING_EXTERNAL_PROCESS」に数値を渡すことにより,設定することができます。
タイムアウトに達した外部プロセス,および子プロセスはすべて強制的に終了させられます。
注記:この機能はドキュメントに含まれない予定です。
http://doc.4d.com/4Dv15R5/4D/15-R5/SET-ENVIRONMENT-VARIABLE.301-2937743.ja.html
miyako- 投稿数 : 468
登録日 : 2016/07/05
Permissions in this forum:
返信投稿: 不可
|
|