Bem, com mais um w
você deve obter tudo de acordo com a página do manual:
ewww
Wraps display from the e flag and displays the
ENV
list until it reaches theINT_MAX
value.
Esse é um limite muito grande.
Se você está pensando em criar ferramentas para isso, você deve procurar no getevars
e geteargs
funções que ps
usa para a exibição ewww
.
Aqui está um uso ingênuo de getevars
, imprime seu próprio ambiente (limite ~ 1Mb):
#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;
}