Cluster Server 7.3.1 エージェント開発者ガイド - AIX、Linux、Solaris、Windows
- 概要
- エージェントのエントリポイントの概要
- エージェントのエントリポイントについて
- エージェントエントリポイントの説明
- action エントリポイントについて
- info エントリポイントについて
- C++ またはスクリプトエントリポイントの使用上の注意事項
- エージェント情報ファイルについて
- ArgList 属性と ArgListValues 属性について
- C++ でのエントリポイントの作成
- C++ でのエントリポイントの作成について
- C++ のエントリポイントの構文
- エージェントフレームワークの基本関数
- コンテナサポートのためのエージェントフレームワーク基本関数
- スクリプトでのエントリポイントの作成
- スクリプトでのエントリポイントの作成について
- スクリプトエントリポイントの構文
- エージェントフレームワークの基本関数
- VCSAG_GET_ATTR_VALUE
- コンテナをサポートするエージェントフレームワーク基本関数
- スクリプトのエントリポイントの例
- エージェントメッセージのログ
- カスタムエージェントの作成
- スクリプトベースの IMF 対応カスタムエージェントの作成
- エージェントのテスト
- 静的タイプ属性
- 静的属性について
- 静的タイプ属性の定義
- AdvDbg
- ArgList
- 状態の遷移図
- 国際化されたメッセージ
- First Failure Data Capture(FFDC)を使用した VCS リソースの予期しない動作のトラブルシューティング
- 付録 A. 5.0 より前の VCS エージェントの使用
VCSAgExecWithTimeout
int VCSAgExecWithTimeout(const char *path, char *const argv[], unsigned int timeout, char *buf, long buf_size, unsigned long *exit_codep)
新しいプロセスに分岐し、プログラムを実行した後で、プログラムが完了するまで待ち、状態を戻します。 プロセスがタイムアウト値の時間内に完了しない場合、強制終了します。 また、stdout または stderr からメッセージを取り込み、buf に保持します。 呼び出し側では、buf のサイズを buf_size 以上確保するようにします。 VCSAgExecWithTimeout は強制取り消しポイントです。 VCSAgExecWithTimeout を呼び出す C++ エントリポイントが、API を呼び出す前に取り消しを無効にしても、スレッドは VCSAgExecWithTimeout 内で取り消されることがあります。 したがって、エントリポイントでは、適切な取り消しクリーンアップハンドラをプッシュしたことを確認してから、VCSAgExecWithTimeout を呼び出す必要があります。 強制取り消しでは、タイムアウトのエントリポイントを実行しているサービススレッドは、この API で作成した子プロセスが終了するまで実行を続けたり待機することはなく、取り消し要求を受け取ったときに取り消しを実行します。
関数の引数の説明
path | 実行するプログラム名。 |
argv | プログラムへの引数。argv(0)は path と同じにする必要があります。 argv の最終エントリは NULL にする必要があります (execv syntax と同じ)。 |
timeout | 秒数を指定します。プロセスはこの秒数内に実行を完了する必要があります。 ゼロを指定した場合、この API はデフォルトで VCSAgExec() と同じになり、timeout は無視されます。 指定した timeout 値が、エントリポイントがタイムアウトになるまでの残り時間を超える場合、この API は可能な最大タイムアウト値を自動的に使用します。 たとえば、API に指定した timeout 値が 40 秒で、エントリポイントが 20 秒後にタイムアウトになるとします。この場合、エージェントは timeout 値を 17 秒(20 - 3 秒)と内部的に計算して設定します。 3 秒は、この API を使用して作成されたプロセスのタイムアウトからエントリポイントプロセスのタイムアウトまでの猶予期間です。 |
buf | stdout または stderr からのメッセージを保持するバッファ。呼び出し側で準備する必要があります。この関数は割り当てを行いません。この関数が戻ると、buf は NULL 終端になります。 |
bufsize | buf のサイズ。stdout または stderr へのメッセージの合計サイズが bufsize を超える場合、初めから(buf_size - 1)文字分だけが戻されます。 |
exit_codep | 実行したプログラムの終了コードの格納場所を指すポインタ。この値は、UNIX では wait() によって記述されたものと解釈する必要があります。 |
戻り値: 実行が正常に終了した場合は VCSAgSuccess が戻ります。