【小技】LAUNCH EXTERNAL PROCESSにタイムアウトを設定する

前のトピックを表示 次のトピックを表示 Go down

【小技】LAUNCH EXTERNAL PROCESSにタイムアウトを設定する

投稿 by miyako on 2016-10-11, 10:41 am

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

miyako

投稿数 : 204
登録日 : 2016/07/05

トップに戻る Go down

前のトピックを表示 次のトピックを表示 トップに戻る


 
Permissions in this forum:
返信投稿: 不可