इसके बिना -t
, sshd
दूरस्थ शेल (और बच्चों को पसंद है sleep
) और दो पाइप के माध्यम से stderr (और एक अन्य पाइप के माध्यम से ग्राहक के इनपुट भी भेजता है) का स्टडआउट प्राप्त करता है।
sshd
उस प्रक्रिया के लिए प्रतीक्षा करता है जिसमें उसने उपयोगकर्ता के लॉगिन शेल को शुरू किया है, लेकिन इसके बाद भी, उस प्रक्रिया ने stdout पाइप पर eof के लिए प्रतीक्षा समाप्त कर दी है (कम से कम ओपनश के मामले में stderr पाइप नहीं)।
और ईओएफ तब होता है जब पाइप के लेखन छोर पर खुलने वाली किसी भी प्रक्रिया द्वारा कोई फ़ाइल डिस्क्रिप्टर नहीं होता है, जो आम तौर पर केवल तब होता है जब सभी प्रक्रियाएं जो उनके स्टडआउट को किसी अन्य चीज़ पर पुनर्निर्देशित नहीं करती हैं।
जब आप उपयोग करते हैं -t
, sshd
तो पाइप का उपयोग नहीं करते हैं। इसके बजाय, दूरस्थ शेल और उसके बच्चों के साथ सभी इंटरैक्शन (स्टडिन, स्टडआउट, स्टेडर) एक छद्म टर्मिनल जोड़ी का उपयोग करके किया जाता है।
एक छद्म टर्मिनल जोड़ी sshd
के साथ, मास्टर पक्ष के साथ बातचीत करने के लिए, कोई समान ईओफ़ हैंडलिंग या यह जानने का कोई तरीका नहीं है कि क्या छद्म टर्मिनल के दास पक्ष के लिए खुले fds के साथ अभी भी प्रक्रियाएं हैं, इसलिए यह केवल समाप्ति की प्रतीक्षा करता है वह प्रक्रिया जिसमें यह दूरस्थ उपयोगकर्ता के लॉगिन शेल को निष्पादित करता है और फिर बाहर निकलता है।
उस निकास पर, मटर जोड़ी के मास्टर पक्ष को बंद कर दिया जाता है जिसका अर्थ है कि नाशपाती नष्ट हो गई है, इसलिए दास द्वारा नियंत्रित प्रक्रियाओं को एक S नाईटअप (जो डिफ़ॉल्ट रूप से उन्हें समाप्त करेगा) प्राप्त होगा।