srcstat 子例程
用途
获取一个或多个子系统上的短状态。
库
系统资源控制器库 (libsrc.a)
语法
#include <spc.h> int srcstat(Host,
SubsystemName,SubsystemPID, ReplyLength, StatusReply,Continued)
char * Host, * SubsystemName;
int SubsystemPID * Continued;
short * ReplyLength;
void * StatusReply;
SubsystemName,SubsystemPID, ReplyLength, StatusReply,Continued)
char * Host, * SubsystemName;
int SubsystemPID * Continued;
short * ReplyLength;
void * StatusReply;
描述
srcstat 子例程向系统资源控制器 (SRC) 发送简短状态请求,并将一个或多个子系统的状态返回给调用者。
参数
| 项 | 描述 |
|---|---|
| 主机 | 指定要求在其上进行状态操作的外部主机。 如果主机为空,那么会将状态请求发送到本地主机上的 SRC。 本地用户必须作为“root”用户运行。 必须配置远程系统以接受系统资源控制器的请求。 即 srcmstr 守护程序(请参阅 /etc/inittab)必须用 -r 标志启动,并且必须配置 /etc/hosts.equiv 或 .rhosts 文件以允许远程请求。 |
| SubsystemName | 指定要在其上获取简短状态的子系统的名称。 要获取所有子系统的状态,请使用 SRCALLSUBSYS 常量。 要获取子系统组的状态, SubsystemName 参数必须以 SRCGROUP 常量开头,后跟要为其附加状态的组的名称。 如果指定空 SubsystemName 参数,那么必须指定 SubsystemPID 参数。 |
| SubsystemPID | 指定要在其上获取状态的子系统的 PID ,如 srcstat 子例程所返回。 如果子系统的多个实例处于活动状态并且您请求长子系统状态或子服务器状态,那么必须指定 SubsystemPID 参数。 如果指定空 SubsystemPID 参数,那么必须指定 SubsystemName 参数。 |
| ReplyLength | 指定 srchdr 结构的大小加上 statcode 结构的数目乘以一个 statcode 结构的大小。 从 srcstat 子例程返回时,将更新此值。 |
| StatusReply | 指定一个指向结构的指针,该结构包含作为 struct srchdr 的第一个元素和作为 struct statcode 的第二个元素 (这两个元素都在 spc.h 文件中定义) 数组,该数组接收所请求子系统的状态应答。 返回的 statcode 数组的第一个元素包含状态标题行。 Statcode 结构数组项数取决于用户查询的子系统数。 |
| 已继续 | 指定对 srcstat 子例程的此调用是否是先前状态请求的延续。 如果 Continued 参数设置为 NEWREQUEST,那么将向 SRC 发送短子系统状态请求,并且 srcstat 将等待第一个状态响应。 调用进程不应将 Continued 设置为除 NEWREQUEST以外的值。 SRC 的最后一个响应将 Continued 设置为 END。 |
返回值
如果 srcstat 子例程成功,它将返回值 0。 如果子例程不成功,那么将返回错误代码。
错误代码
如果下列其中一个或多个为 true ,那么 srcstat 子例程将失败:
| 项 | 描述 |
|---|---|
| SRC_DMNA | SRC 守护程序未处于活动状态。 |
| src_inet_authorized_host | 本地主机不在远程 /etc/hosts.equiv 文件中。 |
| src_inet_invalid_host | 在远程主机上,本地主机未知。 |
| src_invalid_user | 用户不是 root 用户或组系统。 |
| SRC_MMRY | SRC 组件无法分配它所需的内存。 |
| SRC_NOCONTINUE | 继续 未设置为 NEWREQUEST ,当前没有任何继续处于活动状态。 |
| SRC_NORPLY | 请求等待响应时超时。 |
| SRC_SOCK | SRC 套接字通信存在问题。 |
| SRC_UDP | 在 /etc/services 文件中未定义 SRC 端口。 |
| SRC_UHOST | 外部主机未知。 |
示例
- 要请求子系统的状态,请输入:
intcont=NEWREQUEST; struct { struct srchdr srchdr struct statcode statcode[6]; } status; short replen=sizeof(status); srcstat("MaryC","srctest",0,&replen,&status,&cont);此条目请求子系统的所有实例的简短状态srctest于MaryC机器。
- 要请求所有子系统的状态,请输入:
int cont=NEWREQUEST; struct { struct srchdr srchdr; struct statcode statcode[80]; } status; short replen=sizeof(status); srcstat("",SRCALLSUBSYS,0,&replen,&status,&cont);此条目请求本地机器上所有子系统的简短状态。
- 要请求子系统组的状态,请输入:
int cont=NEWREQUEST; struct struct { struct srchdr srchdr; struct statcode statcode[30]; } status; short replen=sizeof(status), rep_num; char subsysname[30]; strcpy(subsysname,SRCGROUP); strcat(subsysname,"tcpip"); srcstat("",subsysname,0,&replen,&status, &cont); rep_num = (replen - sizeof(strcut srchdr)) / sizeof(strcut statcode); for (i = 0; i < rep_num; i++) printf("objtype %d status %d objname %s objtext %s\n", status.statcode[i].objtype, status.statcode[i].status, status.statcode[i].objname, status.statcode[i].objtext);此条目请求子系统组的所有成员的简短状态tcpip并在 stdout上显示查询结果。
文件
| 项 | 描述 |
|---|---|
| /etc/services | 定义用于因特网服务的套接字和协议。 |
| /dev/SRC | 指定 AF_UNIX 套接字文件。 |
| /dev/.SRC-unix | 指定临时套接字文件位置。 |