cc [flags…] –I /usr/cluster/include file –L /usr/cluster/lib –l dsdev#include <rgm/libdsdev.h>scha_err_t scds_pmf_start( scds_handle_t handle, scds_pmf_type_t program_type, int instance, const char *command, int child_monitor_level)scha_err_t scds_pmf_start_env(scds_handle_t handle, scds_pmf_type_t program_type, int instance, const char *command, int child_monitor_level, char ** env)
scds_pmf_start() 関数は、PMF 制御下で、command によって指定されたプログラムを実行します。この関数は、–c オプションを指定した pmfadm(1M) コマンドと同じです。
command 引数には、関数に渡されるコマンド行とコマンド行引数が含まれます。
scds_pmf_start () を使って、データサービスアプリケーションやその他のプロセス (プログラム型 SCDS_PMF_TYPE_SVC、SCDS_PMF_TYPE_MON または SCDS_PMF_TYPE_OTHER) を PMF 制御下で起動するとき child_monitor_level 引数を使ってモニターする子プロセスのレベルを選択します。child_monitor_level 引数は、実行中の子プロセスをレベル child_monitor_level でモニターします。元のプロセスはレベル 0、子プロセスはレベル 1、さらにその子プロセスはレベル 2 で実行されます。新しいフォーク操作により、新しい子のレベルが生成されます。すべての子をモニターするには、-1 を指定します。
たとえば、起動するコマンドがデーモンである場合、適切な child_monitor_level は 0 です。起動するコマンドがデーモンを起動するスクリプトである場合、適切な child_monitor_level の値は1 です。
配下のアプリケーションプロセスがすでに実行中の場合、scds_pmf_start() は syslog() エラーを出力し、 SCHA_ERR_INTERNAL を返します。これは、単一ノード上で START 関数が 2 回 呼び出された場合、RGM が間に STOP 関数を呼び出すことを保証するためです。
次のパラメータがサポートされます。
scds_initialize(3HA) から返されるハンドルです。
実行するプログラムの型です。有効な型は次のとおりです。
データサービスアプリケーション
障害モニター
その他
複数のインスタンスを持つリソースの場合、この整数 (0 以上) はインスタンスを一意に識別します。単一のインスタンスの場合、0 を使用します。
PMF 制御下で実行されるコマンド (コマンド行引数を含む) です。
モニターする子プロセスのレベル( pmfadm の –C オプションと同等)を指定します。 -1 を使用して、すべてのレベルの子プロセスを指定します。
環境文字列への文字ポインタの配列を指定します。環境文字列については、execve(2) のマニュアルページを参照してください。command パラメータで指定したプログラムが実行されると、この環境がこのプログラムに渡されます。
scds_pmf_start() 関数の戻り値は次のとおりです。
関数の実行に成功。
関数の実行に失敗。
配下のアプリケーションプロセスがすでに実行中。
関数の実行に成功。
関数の実行に失敗。その他のエラーコードについては、scha_calls(3HA) を参照してください。
インクルードファイル
ライブラリ
次の属性については、attributes(5) を参照してください。
|
pmfadm(1M), scds_initialize(3HA), scds_pmf_stop(3HA), scds_svc_wait(3HA), scha_calls(3HA), execve(2), attributes(5)