srcstrt 子例程

用途

启动系统资源控制器 (SRC) 子系统。

系统资源控制器库 (libsrc.a)

语法

#include<spc.h>
srcstrt (Host, SubsystemName, Environment, Arguments, Restart, StartFrom)
char * Host, * SubsystemName;
unsigned int  Restart;
int  StartFrom;

描述

srcstrt 子例程发送启动子系统请求包并等待来自系统资源控制器 (SRC) 的应答。

参数

描述
主机 指定请求此启动子系统操作的外部主机。 如果主机为空,那么会将请求发送到本地主机上的 SRC。 本地用户必须作为“root”用户运行。 必须配置远程系统以接受系统资源控制器的请求。 即 srcmstr 守护程序(请参阅 /etc/inittab)必须用 -r 标志启动,并且必须配置 /etc/hosts.equiv.rhosts 文件以允许远程请求。
SubsystemName 指定要启动的子系统的名称。
环境 指定执行子系统时放置在子系统环境中的字符串。 EnvironmentArguments 参数的组合值最多不能超过 2400 个字符。 否则, srcstrt 子例程将失败 SRC 根据 shell 使用的相同规则解析环境字符串。 例如,括在引号内的字符串将作为单个 环境 值传递,而括在引号内的字符串外部的空格将对每个环境值进行定界。
Arguments 指定执行子系统时传递到子系统的字符串。 将从命令行解析该字符串,并将其追加到子系统对象类中的命令行参数。 EnvironmentArguments 参数的组合值最多不能超过 2400 个字符。 否则, srcstrt 子例程将失败 SRC 根据 shell 使用的相同规则解析命令参数。 例如,括在引号内的字符串将作为单个自变量传递,而括在引号内的字符串外的空格将对每个自变量进行定界。
重新启动 指定子系统重新启动时的覆盖。 如果 Restart 参数设置为 SRCNO,那么将使用子系统对象类中的子系统重新启动定义。 如果 重新启动 参数设置为 SRCYES,那么如果子系统异常终止,那么不会尝试重新启动该子系统。
StartFrom 指定 srcstrt 子例程是否将启动结果显示到标准输出。 如果 StartFrom 参数设置为 SSHELL,那么启动结果将显示为标准输出,并且 srcstrt 子例程始终成功返回。 如果 StartFrom 参数设置为 SDAEMON,那么启动结果不会显示到标准输出,而是传递回调用者。

返回值

StartFrom 参数设置为 SSHELL时, srcstrt 子例程返回值 SRC_OK。 否则,将返回子系统进程标识。

错误代码

如果下列任何一项为真,那么 srcstrt 子例程将失败:

描述
SRC_AUDITID 审计用户标识无效。
SRC_DMNA SRC 守护程序未处于活动状态。
SRC_FEXE 无法对子系统进行 forkexec编辑。
SRC_INET_AUTHORIZED_HOST 本地主机不在远程 /etc/hosts.equiv 文件中。
SRC_INET_INVALID_HOST 在远程主机上,本地主机未知。
SRC_INVALID_USER 用户不是 root 用户或组系统。
SRC_INPT 无法建立子系统标准输入文件。
SRC_MMRY SRC 组件无法分配它所需的内存。
SRC_MSGQ 无法创建子系统消息队列。
SRC_MULT 不允许子系统的多个实例。
SRC_NORPLY 请求等待响应时超时。
SRC_OUT 无法建立子系统标准输出文件。
SRC_PIPE 无法为子系统建立管道。
SRC_SERR 无法建立子系统标准错误文件。
SRC_SUBSOCK 无法创建子系统通信套接字。
SRC_SUBSYSID 系统用户标识无效。
SRC_SOCK SRC 套接字通信存在问题。
SRC_SVND 子系统对于 SRC 守护程序是未知的。
SRC_UDP /etc/services 头文件中未定义 SRC 端口。
SRC_UHOST 外部主机未知。

示例

  1. 要启动传递 EnvironmentArguments 参数的子系统,请输入:
    rc=srcstrt("","srctest","HOME=/tmpTERM=ibm6155",
    "-z\"thezflagargument\"",SRC_YES,SSHELL);

    这将启动srctest在本地主机上放置子系统,HOME=/tmp, TERM=ibm6155在环境中使用-zthezflagargument作为子系统的两个参数。 这还会将启动命令的结果显示为标准输出,并允许 SRC 在子系统异常结束时重新启动该子系统。

  2. 要在外部主机上启动子系统,请输入:
    rc=srcstrt("MaryC","srctest","","",SRC_NO,SDAEMON);
    这将启动srctest子系统MaryC机器。 这不会向标准输出显示启动命令的结果,并且不允许 SRC 在子系统异常结束时重新启动子系统。

文件

描述
/etc/services 定义用于因特网服务的套接字和协议。
/dev/SRC 指定 AF_UNIX 套接字文件。
/dev/.SRC-unix 指定临时套接字文件位置。