在AIX上列出正在运行的进程的环境variables,没有字符限制

今天我试图debugging一个过程没有拿出正确的环境variables的问题。 我们花了好几个小时才意识到它没有select正确的variables。

我试图列出他们在这里使用的解决scheme: https : //serverfault.com/a/104175/90224 ( ps eww [pid] ),但它似乎有一个像3155个字符,这是甚至不接近足以满足特定的应用。 (这个时候甚至没有打印命令行选项)

我可以在AIX上使用另一种方法来find它吗? 我是一名软件开发人员,所以我不介意需要一些代码的解决scheme。

那么,再多一个你应该得到这一切根据手册页:

 ewww 

从e标志中显示INT_MAX并显示ENV列表,直到达到INT_MAX值。

这是一个相当大的限制。

如果您正在为此创build自己的工具,则应该查看ps用于ewww显示的getevarsgeteargs函数。

这是一个天真的使用getevars ,打印自己的环境(限制getevars ):

 #include <sys/types.h> #include <procinfo.h> #include <unistd.h> #include <stdio.h> #define ENV_MAX (1024*1024) int main(void) { struct procentry64 pe; char buffer[ENV_MAX]; pe.pi_pid = getpid(); int rc = getevars(&pe, sizeof(pe), buffer, sizeof(buffer)); if (rc != 0) { perror("getevars"); return 1; } buffer[ENV_MAX-2] = buffer[ENV_MAX-1] = 0; char *cur = buffer; char *end = buffer+sizeof(buffer); while ((*cur) && (cur < end)) { int len = puts(cur); cur += len; } return 0; }