O kernel não é necessário para acompanhar os argumentos da linha de comando. Quando um programa é iniciado através da chamada execve
, o kernel deve copiar os argumentos na memória do processo (para que eles fiquem disponíveis como argv
em um programa C, por exemplo). Depois disso, o kernel pode descartar a memória usada para armazenar os argumentos iniciais da linha de comando. O processo pode sobrescrever sua cópia dos argumentos. Portanto, pode simplesmente não haver vestígios dos argumentos.
Algumas variantes unix mantêm uma cópia dos argumentos de alguma forma. O Solaris expõe alguns dados em /proc/$pid
. A partir do OpenSolaris 2009.06, o único traço dos argumentos é em /proc/$pid/psinfo
, onde eles são concatenados com espaços intermediários (para que você não possa distinguir entre foo "one" "two"
e foo "one two"
) e a sequência resultante seja truncada para 80 bytes . Este campo em /proc/$pid/psinfo
é o que ps
imprime na coluna args
.
A propósito, as opções -f
e -l
controlam quais campos são impressos, não se os campos são truncados para alguma largura.