कम से कम, वास्तव में विश्वसनीय नहीं है।
जब कोई प्रक्रिया फोर्क की जाती है, तो इसमें फोर्क() से पहले अपने माता-पिता द्वारा व्यवस्थित पहले तीन फ़ाइल डिस्क्रिप्टर होते हैं, इसलिए उन्हें विरासत मिलती है।
फोर्क के बाद, कर्नेल कोड के बिना, ऐसा कुछ भी नहीं है कि उस प्रक्रिया के अलावा कोई भी प्रक्रिया उनके साथ कर सकती है।
ठीक है, ठीक है, लगभग कुछ भी नहीं। सिस्टम कॉल करता है कि समर्थन डिबगर्स (उदा। जीडीबी) का उपयोग स्मृति में पोक करने और फ़ंक्शन फ़ंक्शन कॉल को करने के लिए किया जा सकता है। एक परीक्षण ट्यूब में, इन धाराओं को बंद और फिर से खोलने के लिए इसका उपयोग किया जा सकता है। वास्तविक जीवन में, कोई बात नहीं है कि प्रक्रिया वास्तव में दुर्भाग्यपूर्ण स्थिति में होगी जब आप इसे डीबगर में पकड़ लेंगे, और यदि आप इसे आजमाते हैं तो आत्म-विसर्जन से प्रतिक्रिया देंगे।
लक्ष्य प्रक्रिया में चलाने के लिए कोड को बल देने के लिए डीबगर का उपयोग करना शायद ही कभी 'बैश' प्रक्रिया है। – bmargulies
@bmargulies: '(printf 'p dup2 (खुला ("/dev/null ", 1), 1) \ np dup2 (1,2) \ nndetach \ n'; नींद 1) | gdb -p $ my_pid' passes एक शेलस्क्रिप्ट के रूप में अच्छी तरह से पर्याप्त है। अनुमोदित, 'gdb' पॉज़िक्स नहीं है, लेकिन फिर, न तो बहुत सारे बाश-इस्म्स हैं :) – Jander