ee_adm_call_command
- 〈このページの構成〉
形式
ANSI C,C++の形式
#include <eeadm.h> int ee_adm_call_command(char *com, int *stat, char *outmsg, EEULONG *outsiz, char **errmsg, EEULONG *errsiz, EELONG time, EELONG flags)
機能
オンライン中にコマンドを入力したときと同様に,UAPからコマンドを実行します。コマンドの処理が完了するまで待って,コマンドの実行結果を戻します。コマンドの処理が終了すると,標準出力情報と標準エラー出力情報が返ります。
コマンドの実行形式ファイルを格納したディレクトリをサーチパスに追加しておいてください。
UAPで値を設定する引数
●com
実行する運用コマンドの文字列を設定します。指定できる文字列の最大長は2048バイトです(末尾のNULL文字を含む)。
●outmsg
コマンドの実行結果として標準出力に出力する文字列を受け取る領域の先頭ポインタを設定します。事前にこのアドレスから,(outsizの値+errsizの値)分の領域を確保しておいてください(単位:バイト)。出力結果を受け取る必要がない場合でも,この長さの領域を確保してください。
●outsiz
コマンドの実行結果として標準出力に出力する文字列(outmsgに返される値)を受け取る長さを設定します(単位:バイト)。指定できる値は1〜32768です。設定する長さには出力結果の末尾のNULL文字分も含まれます。
この引数の値は,UAPから実行するコマンドに応じて決めてください。出力結果を受け取る必要がない場合は,1を設定してください。
処理終了後は,コマンドの実行結果として標準出力に出力した実際の文字列の長さが返されます。
●errsiz
コマンドの実行結果として標準エラー出力に出力する文字列(errmsgに返される値)を受け取る長さを設定します(単位:バイト)。指定できる値は13〜32780です。設定する長さには出力結果の末尾のNULL文字分も含まれます。
この引数の値は,UAPから実行するコマンドに応じて決めてください。出力結果を受け取る必要がない場合は,13を設定してください。
処理終了後は,コマンドの実行結果として標準エラー出力に出力した実際の文字列の長さが返されます。
●time
応答監視時間を設定します(単位:秒)。指定できる値は1〜65535,EEADM_TIMEOUT_DEF,またはEEADM_TIMEOUT_INFです。
EEADM_TIMEOUT_DEFを設定した場合,プロセス関連定義のcall_cmd_timeオペランドで指定した値が応答監視時間になります。EEADM_TIMEOUT_INFを設定した場合は,時間監視をしません。
●flags
EENOFLAGSを設定します。
TP1/EEから値が返される引数
次に示す引数を参照できるのは,リターン値がEE_OK,EEADMER_STATNOTZERO,EEADMER_MEMORY_OUT,EEADMER_MEMORY_ERR,またはEEADMER_MEMORY_OUTERRのときだけです。ほかのリターン値のときは,参照できません。
●stat
実行したコマンドが,正常終了したか異常終了したか(シェルの終了コード)※が返されます。コマンドをバックグラウンド実行した場合は,正常終了か異常終了かに関係なく0が返されます。
- 注※
-
waitpid(2)で指定した形式で,sh(1)の終了ステータスを示します。
●outmsg
コマンドの実行結果として標準出力に出力した文字列が返されます。
文字列の先頭アドレスは,ee_adm_call_command関数を呼び出すときにoutmsgに設定したアドレスです。文字列の長さは,最大で(ee_adm_call_command関数を呼び出すときにoutsizに設定した値−1)です(単位:バイト)。
長さの最大を超える文字列は切り捨てられます。また,パイプの容量を超えた分も切り捨てられます。長さの最大を超えなかった場合は,その文字列の長さ分だけ返されます。
文字列の末尾にはNULL文字が付きます。出力結果がない場合は,NULL文字だけが返されます。
●outsiz
標準出力に出力した文字列の長さが返されます(単位:バイト)。返される長さには出力結果の末尾のNULL文字分は含まれません。
●errmsg
コマンドの実行結果として標準エラー出力に出力した文字列の先頭ポインタが返されます。
この文字列は,標準出力に出力した文字列に続いて出力されます。文字列の長さは,最大で(ee_adm_call_command関数を呼び出すときにerrsizに設定した値−13)です(単位:バイト)。
長さの最大を超える文字列は切り捨てられます。また,パイプの容量を超えた分も切り捨てられます。長さの最大を超えなかった場合は,その文字列の長さ分だけ返されます。
文字列の末尾にはNULL文字が付きます。出力結果がない場合は,NULL文字が13バイト返されます。
●errsiz
標準エラー出力に出力した文字列の長さが返されます(単位:バイト)。返される長さには出力結果の末尾のNULL文字分は含まれません。
リターン値
リターン値 |
意味 |
---|---|
EE_OK |
シェルの終了コードは0(コマンドの実行が正常終了)です。標準出力および標準エラー出力の領域に文字列を格納しました。 |
EEADMER_ARGUMENT |
引数に設定した値が間違っています。 |
EEADMER_DEF_INVALID |
運用コマンド実行サーバ関連の定義が指定されていません。 |
EEADMER_MEMORY_ERR |
標準エラー出力のデータが,領域に収まりません。 |
EEADMER_MEMORY_OUT |
標準出力のデータが,領域に収まりません。 |
EEADMER_MEMORY_OUTERR |
標準出力のデータと標準エラー出力のデータの両方が,領域に収まりません。 |
EEADMER_MEMORY_SHORT |
メモリが不足しました。 |
EEADMER_RPC_ERR |
運用コマンド実行サーバへの通信が失敗しました。 |
EEADMER_STATNOTZERO |
シェルの終了コードは0以外(コマンドの実行が異常終了)です。標準出力および標準エラー出力のデータを領域に格納しました。 |
EEADMER_SYSTEMCALL |
システムコール(close,pipe,dup,またはread)の呼び出しに失敗しました。 |
EEADMER_UNRESOLVABLE |
そのほかのエラーが発生しました。 |
EECOMER_CNDBPP |
オフラインバッチプロセスから発行しているため,この機能は使用できません。 |
EECOMER_CNDUOC |
UOCから発行しているため,この機能は使用できません。 |
EECOMER_ENVIRON |
TP1/EEの環境下にありません。 |
注意事項
-
この関数で実行できるTP1/EEのコマンドは,トランザクション種別によって異なります。詳細は「2.6 運用コマンド実行機能」を参照してください。
-
サーチパスに指定したディレクトリ間で,コマンド名が重複しないように注意してください。コマンド名が重複している場合,正しいコマンドが実行されないおそれがあります。
-
ファイル操作に関連するコマンドを実行する場合,ファイルのI/Oなどの処理に時間が掛かるため,実行する場合は十分注意してください。