क्या किसी प्रक्रिया की मूल प्रक्रिया को बदलना संभव है? यदि हाँ, तो कैसे?
उदाहरण के लिए,
कैसे
screen
एकscreen
सत्र और इसके अंदर चल रही प्रक्रियाओं को अलग-अलग शेल प्रक्रियाओं से जोड़ने का प्रबंधन करता है? क्या मूल प्रक्रिया में बदलाव हुआ है?मुझे शेल प्रक्रिया के परिवर्तन के अन्य तरीकों के बारे में सुना है जिसमें एक कार्यक्रम चल रहा है, लेकिन मुझे याद नहीं है। क्या कार्यक्रम की मूल प्रक्रिया में भी बदलाव होता है?
मैंने सोचा था कि
disown
एक प्रक्रिया प्रक्रिया की मूल प्रक्रिया को बदल देती है, सिर्फ इसलिए कि नामdisown
का अर्थ है कि। लेकिन मैंने पाया कि यह सच नहीं है।Emacs क्लाइंट एक अलग टर्मिनल टैब पर Emacs सर्वर से जुड़ सकता है। क्या मूल प्रक्रिया में बदलाव हुआ है?
getppid(2)
, एक सिस्टम कॉल, और सिस्टम कॉल कर्नेल द्वारा नियंत्रित किया जाता है। किसी प्रोग्राम को उस कॉल को जारी करने, मूल्य को बचाने और उसके मूल्य में बदलाव के बाद उस मूल्य का उपयोग करके भ्रमित किया जा सकता है। यहां दौड़ की स्थिति होने की संभावना है।
disown
बस किसी बच्चे को किसी बच्चे की आंतरिक प्रक्रियाओं की सूची से हटा देता है। बच्चे का पीपीआईडी खोल के बराबर रहता है। खोल भूल गया है कि यह कभी उस बच्चे को शुरू करता है, लेकिन कर्नेल याद रखता है।