Eu não acredito que haja uma maneira em geral. Pode haver algum sistema operacional específico. Você disse Unix / Linux, mas talvez você esteja interessado em uma solução para um sistema operacional em particular?
Como exemplo, o Solaris armazena o argumento de processos em dois locais. Um é um buffer imutável no kernel associado ao processo. Mas como é um buffer de kernel, o tamanho é limitado e pode ser uma versão truncada da linha de comando.
O outro local é ARGV [] no próprio processo. Isso pode ser consultado (como por meio de pargs
) e retornará o conteúdo não-truncado. Mas como o ARGV faz parte da memória do processo, ele pode ser modificado a qualquer momento. O conteúdo pode não ser o mesmo que a linha de comando que iniciou o processo.
Um usuário posterior não pode ter a garantia de encontrar a linha de comando original.
Acabei de encontrar a resposta de Stéphane Chazelas para um problema semelhante aqui: ps: full o comando é muito longo
Ele parece incluir um método que tenta decodificar ARGV [] em binários ELF x86, mas não consegui obter dados dele em um caso de teste. Não sei porquê. Mas a técnica parece razoável.