私が知っている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は次のように述べています。プロセスの有効な gid は stb.st_gid にあります。これは移植性が高く(LinuxおよびFreeBSDで動作し)、移植性が低下します(文書化されていません)。
ありがとう、マーク!