실행 중인 프로세스의 GID를 프로그래밍 방식으로 검색하는 방법

실행 중인 프로세스의 GID를 프로그래밍 방식으로 검색하는 방법

내가 알고 있는 PID를 가진 실행 중인 프로세스의 유효한 GID를 확인하려면 C 코드를 작성해야 합니다. 나는 이것을 할 직접적인 방법을 찾지 못했습니다. popen("/bin/ps ARGS", "r")출력을 호출하고 fopen("/proc/PID/status", "r")구문 분석하는 등 내가 사용할 수 있는 헤비급 조합이 많이 있습니다.저것출력되지만 더 깨끗하고 직접적인 접근 방식을 찾고 있습니다. PID 매개변수 만 getegid()사용하는 경우...

답변1

나는 이것을 수행하는 휴대용 방법을 모릅니다. 가능할 수도 있다고 생각 ptrace()하지만 맨페이지에서 이를 수행하는 방법을 볼 수 없습니다. 이것이 작동하더라도 어떤 방식으로든 다른 프로세스를 "추적"하는 것은 불필요하게 방해가 될 수 있습니다.

Linux의 경우 사용 조언은 fopen("/proc/PID/status", "r")최대한 깔끔하고 간단해야 합니다. 뭐가 있을 것 같은데데이터 베이스하다.

답변2

이것은 인기 있는 질문인 것 같아서 답변을 매우 명확하게 하고 싶었습니다. @MarkPlotnick은 이전(매우 좋은) 답변에 대한 의견으로 가장 좋은 답변을 제공했지만 다시 게시할 만큼 그의 관심을 끌지 못했기 때문에 이를 정답으로 받아들이고 사람들에게 도움을 줄 수 있습니다. 따라서 Mark에게 사과드립니다.

Mark Plotnick은 다음과 같이 말했습니다: 또한 stat("/proc/nnn", &stb); 프로세스의 유효 gid는 stb.st_gid에 있습니다. 이는 이식성이 뛰어나고(Linux 및 FreeBSD에서 작동) 이식성이 떨어집니다(문서화되지 않음).

고마워요 마크!

관련 정보