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() 函数可执行由 command 指定的受 PMF 控制的程序。此函数等同于带有 –c 选项的 pmfadm(1M) 命令。
command 参数包含命令行和传递给函数的命令行参数。
使用 scds_pmf_start () 启动 PMF 下的数据服务应用程序、监视器或其他进程(程序类型 SCDS_PMF_TYPE_SVC、SCDS_PMF_TYPE_MON 或 SCDS_PMF_TYPE_OTHER)时,通过使用 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 ,因为 RGM 保证对节点上的 START 函数的两个调用必需具有介入的 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)