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;
#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 procsinfo 或 struct procentry64的大小。 参数以 "argsBuffer返回,应由调用者分配。 数组的大小必须在argsLen 中给出。
返回时, argsBuffer 由一系列字符串组成,每个字符串以空字符 (ascii ` \0 ') 终止。 因此,连续两个NULLs 指示列表结束。
注: 进程可以异步更改自变量,但不保证结果一致。
参数
- processBuffer
- 指定 procsinfo 或 procentry64 结构的地址,其 pi_pid 字段应包含要查找的进程的 pid。
- bufferLen
- 指定单个 procsinfo 或 procentry64 结构的大小。
- argsBuffer
- 指定要用一系列表示所需参数的字符串填充的字符数组的地址。 额外的NULL字符标记列表的结尾。 此数组必须由调用者分配。
- argsLen
- 指定 argsBuffer 数组的大小。 返回的字符数不超过 argsLen 。
返回值
如果成功, getevars 子例程将返回零。 否则,返回值为-1,并设置errno全局变量来指示错误。
错误代码
如果以下情况成立,那么 getevars 子例程不成功:
| 项 | 描述 |
|---|---|
| ESRCH | 指定的进程不存在。 |
| Efault | 对缓冲区的复制操作未成功,或者 processBuffer 或 argsBuffer 参数无效。 |
| EINVAL | bufferLen 参数不包含单个 procsinfo 或 procentry64 结构的大小。 |
| ENOMEM | 地址空间中没有可用的内存。 |