Obtendo a invocação do comando original de /proc/self

Obtendo a invocação do comando original de /proc/self

Estou tentando executar algum código de inicialização em todos os processos por meio do vinculador dinâmico.

O código deve fazer coisas com base no argumento zero do processo. Estou recebendo os argumentos de /proc/self/cmdline(se você souber de uma maneira melhor de acessá-los fora do main, informe), mas isso tem um problema:

Os scripts obtêm seu shebang (sem o #!) como argumento zero e, nesse caso, estou interessado no próximo argumento. Mas como diferenciar os processos interpretados dos nativos?

Responder1

Os detalhes dos quais você está extraindo /proc/self/statussão encontrados em /proc/self/comm(sem script).

Para a pergunta pretendida: determinar quais processos sãointerpretadoe quais sãonativo, você não pode fazer isso sem saber quais processos devem serintérpretes. Afinal, qualquer processo pode renomear-se através de uma execchamada, usando o que quiser na lista de argumentos do processo resultante. Você poderiaadivinharcomparando /proc/self/exe(que aponta para o executável) com a lista de argumentos, mas isso seria apenas uma suposição, já que há exemplos em que um não-intérprete renomeia seus descendentes apenas para tornar seu uso mais aparente.

Leitura adicional:

Responder2

Parece que os processos Nameentram

</proc/self/status |grep '^Name'

e o nome parece ser o basenamedo argumento zero real.

(Vou manter a pergunta aqui caso alguém dê uma resposta melhor).

informação relacionada