質問: `ps` コマンドなどを実行すると、ある時刻の特定のプロセスに、何の pid が割り振られているかを確認することができます。 別の時刻にもう一回 `ps` を実行すると、先ほど確認した pid を持つプロセスがあるかどうかを確認することができますが、 linux/unix では pid が使い回されることを考えると、この、別の時刻において取得された pid に紐づいたプロセスは、必ずしも前に取得した際のプロセスとは同一ではないと思っています。 たとえば、 pid を記録しておいて、のちのちにプロセス制御でその pid を利用する場合に、万が一、再利用によって別プロセスになっていた場合に、事故のようなことが起きたら嫌だな、と考えると、以下の疑問が生じました。 ### 質問 ある別々の時刻で特定の pid に対応するプロセスを取得したときに、これらが同一のものであるかを確認するための手段はありますか?
回答: Linux 5.3+ 限定ですが `pidfd_open`(2) で開いて監視しておけば OK かと。 もしくはこれも Linux 限定だと思いますが `/proc/` に `chdir`(2) (`cd`) しておいて `.` が存在するかをポーリングで確認。該当プロセスが終了すると `.` には `ENOENT` でアクセスできなくなります。なお、`inotifywatch`(1) (`inotify`(7)) で `/proc//* 下のファイルへのイベント監視を試してみましたが、有用なイベントを補足できませんでした。