cc [flags…] –I /usr/cluster/include file –L /usr/cluster/lib –l dsdev#include <rgm/libdsdev.h>
scha_err_t scds_timerun(scds_handle_t handle, const char *command, time_t timeout, int signal, int *cmd_exit_code);
scha_err_t scds_timerun_delay(scds_handle_t handle, const char *command, time_t timeout, int signal, int *cmd_exit_code);
scha_err_t scds_timerun_delay_threshold(scds_handle_t handle, const char *command, time_t timeout, int signal, int *cmd_exit_code);
scha_err_t scds_timerun_threshold(scds_handle_t handle, const char *command, time_t timeout, int signal, int *cmd_exit_code);
scds_timerun() 函数使用 hatimerun 执行指定命令。如果在 timeout 参数指定的分配时段内未完成该命令,scds_timerun() 将发送由 signal 参数指定的信号以终止该命令。
command 参数不支持 I/O 重定向。但是,您可以编写脚本以执行重定向,然后将此脚本加入 command 参数中,作为 scds_timerun() 需要执行的命令。
scds_timerun_delay() 函数的行为与 scds_timerun() 基本相同,不同的是它在调用 hatimerun 命令时使用 –d(delay,延迟)命令行选项。此选项延迟启动超时时钟,直到命令已开始执行。在负载沉重的系统上,从子进程派生到指定的程序开始执行,这之间可能有几秒的延迟。使用 –d 选项避免了将额外的执行前时间计入所分配的超时时间。
scds_timerun_threshold() 函数执行与 scds_timerun() 函数相同的指定命令,但有一处差别。如果该命令的执行时间超过资源的 Timeout_threshold 值,但没有超过超时限制,则将生成一条系统日志警告消息和对应的系统事件。这些消息通知管理员需要采取措施以避免错误的故障转移,例如增加超时期间。
scds_timerun_delay_threshold() 函数的行为与 scds_timerun_delay() 相同,但有一处差别。如果该命令的执行时间超过资源的 Timeout_threshold 值,但没有超过超时限制,则将生成一条系统日志警告消息和对应的系统事件。这些消息通知管理员需要采取措施以避免错误的故障转移,例如增加超时期间。
支持以下参数:
执行命令返回的代码
包含要运行的命令的字符串
从 scds_initialize(3HA) 返回的句柄
用于终止命令的信号(如果在超时到期时该命令仍在运行)。如果 signal = -1,那么将使用 SIGKILL。请参见 signal(3HEAD)。
分配用于运行命令的时间(秒)
scds_timerun() 函数返回以下值:
该函数成功。
该函数失败。
已执行命令,且 cmd_exit_code 包含子程序的退出状态。
未发生超时,但其他某个错误已被 scds_timerun() 检测到,该错误不是子程序检测到的错误。或者 hatimerun(1M) 捕获到信号 SIGTERM。
存在无效的输入参数。
在由 command 参数指定的命令完成执行之前发生超时。
有关其他错误代码的描述,请参见 scha_calls(3HA)。
头文件
库
有关下列属性的说明,请参见 attributes(5):
|
hatimerun(1M)、scds_initialize(3HA)、scha_calls(3HA)、signal(3HEAD)、attributes(5)、r_properties(5)