PIDが実行されていないときでも/ proc / PIDは存在できますか?


11

/proc/4587PID 4587のプロセスがないにもかかわらず、のようなフォルダーが存在する可能性はありますか?


1
/ proc / NをチェックすることがPID Nが実行されているかどうかを確認する安全で信頼できる方法であるかどうか疑問に思っていますか?
アンディレスター2017

理論的には、プロセスがなくなった後に/ procに残留物があるのではないかと思っていました。
デビッドダイ

回答:


25

マウント/procのみの場合proc(およびオーバーレイでトリックをプレイしているユーザーがいない場合)、いいえ、対応するプロセスが何らかの状態(ゾンビを含む)で存在する限り、pidベースのフォルダーは存在します。実際、プロセスIDのディレクトリエントリを返す直前に、カーネルはプロセスの存在を再検証します。そのため、ディレクトリエントリが返された瞬間、対応するプロセスはまだ存在しています。ディレクトリへのアクセスも、対応するプロセスを検索することから始まります。(行番号がために、外観を変更した場合proc_pident_instantiateproc_pident_lookup。)

/proc結果を一覧表示して後で使用することで発生する問題に遭遇する可能性があります(数マイクロ秒後でも)。一覧表示時にプロセスが実行さ/procれていて、結果を操作する前に停止する場合があります。


3
実行が終了したがwait()呼び出されなかったプロセスはどうなりますか?
el.pescado 2017

2
@ el.pescadoの良い点です。簡単なチェックは、ゾンビプロセスがまだディレクトリを持っていることを示しています。私は私の答えを更新します、ありがとう!
Stephen Kitt 2017

基本的に、psプロセスが表示される場合、その/procディレクトリが存在している必要があります。
Barmar

実際、@ Barmarは「必須」です。表示される情報を見つけるためにpsアクセス/procします。
Stephen Kitt 2017
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.