जब पीआईडी ​​नहीं चल रहा हो तब क्या / खरीद / पीआईडी ​​मौजूद हो सकता है?


11

क्या यह संभव है कि एक फ़ोल्डर /proc/4587मौजूद है भले ही कोई प्रक्रिया नहीं है जिसमें PID 4587 है?


1
क्या आप सोच रहे हैं कि PID N चल रहा है या नहीं, यह देखने के लिए / proc / N एक सुरक्षित / विश्वसनीय तरीका है?
एंडी लेस्टर

मैं सोच रहा था कि सैद्धांतिक रूप से प्रक्रिया चले जाने के बाद / खरीद में अवशेष हो सकता है।
डेविड दाई

जवाबों:


25

यदि /procकेवल procमाउंट है (और कोई भी ओवरले के साथ चालें नहीं खेल रहा है), नहीं, एक पीड-आधारित फ़ोल्डर केवल तब तक मौजूद है जब तक कि संबंधित प्रक्रिया कुछ स्थिति में मौजूद है (एक ज़ोंबी के रूप में सहित)। वास्तव में, प्रक्रिया आईडी के लिए निर्देशिका प्रविष्टि वापस करने से ठीक पहले, कर्नेल प्रक्रिया के अस्तित्व को फिर से सत्यापित करता है - इसलिए तत्काल एक निर्देशिका प्रविष्टि वापस कर दी जाती है, इसी प्रक्रिया अभी भी है। किसी निर्देशिका को एक्सेस करना भी इसी प्रक्रिया को देखकर शुरू होता है। (यदि रेखा संख्या बदलती है, तो देखें proc_pident_instantiateऔर proc_pident_lookup।)

/procबाद में परिणामों को सूचीबद्ध करने और उपयोग करने के कारण आप समस्या में भाग सकते हैं (बाद में कुछ माइक्रोसेकंड भी): जब आप सूची बनाते हैं तो एक प्रक्रिया चल सकती है /proc, और परिणामों पर कार्य करने से पहले रुक जाएं।


3
उन प्रक्रियाओं के बारे में जो निष्पादन समाप्त कर चुके हैं, लेकिन wait()उन पर कॉल नहीं किया गया है?
el.pescado

2
अच्छी बात @ el.pescado, एक त्वरित जांच इंगित करती है कि ज़ोंबी प्रक्रियाओं में अभी भी उनकी निर्देशिका है। मैं अपना जवाब अपडेट करूंगा, धन्यवाद!
स्टीफन किट

असल में, यदि psप्रक्रिया को दिखाता है , तो इसकी /procनिर्देशिका मौजूद होनी चाहिए।
बारमर

@ बरमार वास्तव में "अवश्य" होता है: यह प्रदर्शित होने वाली सूचनाओं को खोजने के लिए psपहुँचता /procहै।
स्टीफन किट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.