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

1

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 zeroth do processo. Eu estou recebendo os argumentos de /proc/self/cmdline (se você sabe de uma maneira melhor de acessá-los fora do main, por favor diga), no entanto, isso tem um problema:

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

    
por PSkocik 21.05.2016 / 01:46

2 respostas

2

O detalhe que você está extraindo de /proc/self/status é encontrado em /proc/self/comm (sem script).

Para a pergunta pretendida: para determinar quais processos são interpretados e quais são nativos , você não pode fazer isso sem saber quais processos devem ser intérpretes . Afinal, qualquer processo pode renomear a si mesmo por meio de uma chamada exec , usando o que quiser na lista de argumentos do processo resultante. Você poderia adivinhar comparando /proc/self/exe (que aponta para o executável) à lista de argumentos, mas isso seria apenas um palpite, já que há exemplos em que um não-intérprete renomeia seus descendentes apenas para fazer seu uso mais aparente.

Leitura adicional:

por 21.05.2016 / 02:39
0

Aparecem processos que recebem Name s em

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

e o nome parece ser o basename do argumento real zero.

(Vou manter a questão aqui, caso alguém forneça uma resposta melhor).

    
por 21.05.2016 / 02:20