Como recuperar programaticamente o GID de um processo em execução

5

Eu preciso escrever algum código em C para verificar o GID efetivo de um processo em execução cujo PID eu conheço. Eu não encontrei nenhuma maneira direta de fazer isso. Há um número de kludges pesados que eu poderia usar, como invocar popen("/bin/ps ARGS", "r") e analisar sua saída, ou fopen("/proc/PID/status", "r") e analisar essa saída, mas estou procurando uma abordagem mais clara e direta . Se somente getegid() levou um argumento PID ...

    
por BobDoolittle 03.07.2014 / 00:34

1 resposta

2

Eu não conheço nenhuma maneira portátil de fazer isso. Eu pensei que talvez ptrace() , mas não consigo ver como na manpage. Mesmo que isso funcione, "rastrear" o outro processo de qualquer maneira provavelmente é desnecessariamente invasivo

Para o Linux, sua sugestão de usar fopen("/proc/PID/status", "r") é a mais limpa e direta que você pretende obter. Parece ser o que o gdb faz.

    
por 03.07.2014 / 03:53

Tags