Cómo recuperar programáticamente el GID de un process en ejecución

Necesito escribir un código C para verificar el GID efectivo de un process en ejecución cuyo PID conozco. No he encontrado ninguna forma directa de hacer esto. Hay una serie de kludges de peso pesado que podría usar, como invocar popen("/bin/ps ARGS", "r") y analizar su salida, o fopen("/proc/PID/status", "r") y parsing esa salida, pero estoy buscando un enfoque más limpio y directo. Si solo getegid() tomara un argumento PID …

No sé de ninguna manera portátil para hacer esto. Pensé que quizás ptrace() , pero no puedo ver cómo en la página de manual. Incluso si eso funciona, "rastrear" el otro process de cualquier manera probablemente sea innecesariamente invasivo

Para Linux, su sugerencia de usar fopen("/proc/PID/status", "r") es tan clara y directa como la que obtendrá. Parece ser lo que hace gdb .