srcstrt 子例程
用途
启动系统资源控制器 (SRC) 子系统。
库
系统资源控制器库 (libsrc.a)
语法
#include<spc.h>
srcstrt (Host, SubsystemName, Environment, Arguments, Restart, StartFrom)
char * Host, * SubsystemName;
char * Environment, * Arguments;
描述
srcstrt 子例程发送启动子系统请求包并等待来自系统资源控制器 (SRC) 的应答。
参数
| 项 | 描述 |
|---|---|
| 主机 | 指定请求此启动子系统操作的外部主机。 如果主机为空,那么会将请求发送到本地主机上的 SRC。 本地用户必须作为“root”用户运行。 必须配置远程系统以接受系统资源控制器的请求。 即 srcmstr 守护程序(请参阅 /etc/inittab)必须用 -r 标志启动,并且必须配置 /etc/hosts.equiv 或 .rhosts 文件以允许远程请求。 |
| SubsystemName | 指定要启动的子系统的名称。 |
| 环境 | 指定执行子系统时放置在子系统环境中的字符串。 Environment 和 Arguments 参数的组合值最多不能超过 2400 个字符。 否则, srcstrt 子例程将失败。 SRC 根据 shell 使用的相同规则解析环境字符串。 例如,括在引号内的字符串将作为单个 环境 值传递,而括在引号内的字符串外部的空格将对每个环境值进行定界。 |
| Arguments | 指定执行子系统时传递到子系统的字符串。 将从命令行解析该字符串,并将其追加到子系统对象类中的命令行参数。 Environment 和 Arguments 参数的组合值最多不能超过 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 | 无法对子系统进行 fork和 exec编辑。 |
| 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 | 外部主机未知。 |
示例
- 要启动传递 Environment 和 Arguments 参数的子系统,请输入:
rc=srcstrt("","srctest","HOME=/tmpTERM=ibm6155", "-z\"thezflagargument\"",SRC_YES,SSHELL);这将启动srctest在本地主机上放置子系统,HOME=/tmp, TERM=ibm6155在环境中使用-z和thezflagargument作为子系统的两个参数。 这还会将启动命令的结果显示为标准输出,并允许 SRC 在子系统异常结束时重新启动该子系统。
- 要在外部主机上启动子系统,请输入:
这将启动srctest子系统MaryC机器。 这不会向标准输出显示启动命令的结果,并且不允许 SRC 在子系统异常结束时重新启动子系统。rc=srcstrt("MaryC","srctest","","",SRC_NO,SDAEMON);
文件
| 项 | 描述 |
|---|---|
| /etc/services | 定义用于因特网服务的套接字和协议。 |
| /dev/SRC | 指定 AF_UNIX 套接字文件。 |
| /dev/.SRC-unix | 指定临时套接字文件位置。 |