getevars 子例程

用途

获取进程的环境。

标准 C 库 (libc.a)

语法

#include <procinfo.h>
#include <sys/types.h>

int getevars (processBuffer, bufferLen, argsBuffer, argsLen)
struct procsinfo  *processBuffer
or struct procentry64  *processBuffer;
int  bufferLen;
char  *argsBuffer;
int  argsLen;

描述

getevars 子例程返回启动时传递到命令的环境。 每次调用 getevars时只能检查一个进程。

getevars 子例程使用 processBuffer 的 pi_pid 字段来确定要查找的进程。 bufferLen 应该设置为 struct procsinfostruct procentry64的大小。 参数以 "argsBuffer返回,应由调用者分配。 数组的大小必须在argsLen 中给出。

返回时, argsBuffer 由一系列字符串组成,每个字符串以空字符 (ascii ` \0 ') 终止。 因此,连续两个NULLs 指示列表结束。

注: 进程可以异步更改自变量,但不保证结果一致。

参数

processBuffer
指定 procsinfoprocentry64 结构的地址,其 pi_pid 字段应包含要查找的进程的 pid。
bufferLen
指定单个 procsinfoprocentry64 结构的大小。
argsBuffer
指定要用一系列表示所需参数的字符串填充的字符数组的地址。 额外的NULL字符标记列表的结尾。 此数组必须由调用者分配。
argsLen
指定 argsBuffer 数组的大小。 返回的字符数不超过 argsLen

返回值

如果成功, getevars 子例程将返回零。 否则,返回值为-1,并设置errno全局变量来指示错误。

错误代码

如果以下情况成立,那么 getevars 子例程不成功:

描述
ESRCH 指定的进程不存在。
Efault 对缓冲区的复制操作未成功,或者 processBufferargsBuffer 参数无效。
EINVAL bufferLen 参数不包含单个 procsinfoprocentry64 结构的大小。
ENOMEM 地址空间中没有可用的内存。