Seventh Edition Unix terminal interface
सातवाँ संस्करण यूनिक्स टर्मिनल इंटरफेस सामान्यीकृत अमूर्तता है, जिसमें कार्यक्रमों के लिए एक अनुप्रयोग प्रोग्रामिंग इंटरफेस और उपयोगकर्ताओं के लिए व्यवहार अपेक्षाओं का एक सेट शामिल है, जैसा कि सातवें संस्करण यूनिक्स में ऐतिहासिक रूप से उपलब्ध है। इसे काफी हद तक पोसिक्स टर्मिनल इंटरफेस द्वारा प्रतिस्थापित किया गया है। अवधारणाएँ और अवलोकन सातवें संस्करण यूनिक्स और यूनिक्स/32वी द्वारा प्रदान किया गया टर्मिनल इंटरफेस, और पुराने टर्मिनल ड्राइवर के रूप में बीएसडी संस्करण 4 द्वारा भी प्रस्तुत किया गया, एक सरल था, जो बड़े पैमाने पर टर्मिनल के रूप में टेलीटाइपराइटर के लिए तैयार था। इनपुट को एक समय में एक लाइन में दर्ज किया जाता था, जिसमें ऑपरेटिंग सिस्टम में टर्मिनल ड्राइवर (और स्वयं टर्मिनल नहीं) सरल लाइन संपादन क्षमता प्रदान करता था। कर्नेल द्वारा एक बफर का रखरखाव किया जाता था जिसमें संपादन होता था। टर्मिनल इनपुट पढ़ने वाले अनुप्रयोगों को बफर की सामग्री केवल तभी प्राप्त होगी जब अंतिम पंक्ति संपादन के लिए टर्मिनल पर कुंजी को दबाया गया था। टर्मिनल से सिस्टम में भेजी गई कुंजी संपादन बफर की पूरी वर्तमान सामग्री को मिटा देगी ("मार देगी"), और आम तौर पर एक '@' प्रतीक के रूप में प्रदर्शित की जाएगी जिसके बाद प्रिंट स्थिति को एक नई खाली रेखा पर ले जाने के लिए एक नई पंक्ति अनुक्रम होगा। टर्मिनल से सिस्टम में भेजी गई कुंजी संपादन बफर के अंत से अंतिम वर्ण को मिटा देगी, और इसे आम तौर पर एक '#' प्रतीक के रूप में प्रदर्शित किया जाएगा, जिसे उपयोगकर्ताओं को पिछले वर्ण के 'रबआउट' को दर्शाने के रूप में पहचानना होगा (टेलीटाइपराइटर कागज पर मुद्रित होने के बाद वर्णों को मिटाने में शारीरिक रूप से सक्षम नहीं हैं)। प्रोग्रामिंग के दृष्टिकोण से, एक टर्मिनल डिवाइस में बॉड दरों को प्रसारित और प्राप्त करना, "मिटाना" और "मारना" वर्ण (जो रेखा संपादन करते हैं, जैसा कि समझाया गया है), "इंटरप्ट" और "क्विट" वर्ण (उन सभी प्रक्रियाओं के लिए संकेत उत्पन्न करना जिनके लिए टर्मिनल एक नियंत्रक टर्मिनल था), "स्टार्ट" और "स्टॉप" वर्ण (सॉफ्टवेयर प्रवाह नियंत्रण के लिए उपयोग किया जाता है), "एंड ऑफ फाइल" वर्ण (रीड () सिस्टम कॉल द्वारा बफर से त्याग दिए गए कैरिज रिटर्न की तरह काम करना और इसलिए संभावित रूप से शून्य-लंबाई के परिणाम को वापस करना) और यह निर्धारित करने वाले विभिन्न मोड फ्लैग होते हैं कि क्या कर्नेल के टर्मिनल ड्राइवर द्वारा स्थानीय प्रतिध्वनि का अनुकरण किया गया था, क्या मॉडेम प्रवाह नियंत्रण सक्षम किया गया था, विभिन्न आउटपुट देरी की लंबाई, मैपिंग के लिए। सातवें संस्करण यूनिक्स में टर्मिनलों के लिए तीन इनपुट मोड थेः लाइन मोड (जिसे "पका हुआ" मोड भी कहा जाता है) लाइन मोड में लाइन अनुशासन सभी लाइन संपादन कार्यों को करता है और "इंटरप्ट" और "क्विट" नियंत्रण वर्णों को पहचानता है और उन्हें प्रक्रियाओं को भेजे गए संकेतों में बदल देता है। उपयोगकर्ता द्वारा रिटर्न दबाकर लाइन संपादन पूरा करने के बाद, टर्मिनल से पढ़ने वाले एप्लिकेशन प्रोग्राम पूरी पंक्तियाँ प्राप्त करते हैं। ब्रेक मॉडब्रेक मोड दो कैरेक्टर-एट-ए-टाइम मोड में से एक है। (स्टीफन आर. बॉर्न ने मजाक में इसे "आधा पका हुआ" और इसलिए "दुर्लभ" मोड के रूप में संदर्भित किया।) लाइन अनुशासन कोई लाइन संपादन नहीं करता है, और लाइन संपादन कार्यों के लिए नियंत्रण अनुक्रमों को सामान्य चरित्र इनपुट के रूप में माना जाता है। टर्मिनल से पढ़ने वाले एप्लिकेशन प्रोग्राम जैसे ही पढ़ने के लिए इनपुट कतार में उपलब्ध होते हैं, तुरंत वर्ण प्राप्त करते हैं। हालांकि, "इंटरप्ट" और "क्विट" नियंत्रण वर्णों के साथ-साथ मॉडेम प्रवाह नियंत्रण वर्णों को अभी भी विशेष रूप से संभाला जाता है और इनपुट स्ट्रीम से हटा दिया जाता है। रॉ मॉडरॉ मोड दो कैरेक्टर-एट-ए-टाइम मोड में से एक है। लाइन अनुशासन कोई लाइन संपादन नहीं करता है, और लाइन संपादन कार्यों और विभिन्न विशेष वर्णों ("इंटरप्ट", "क्विट" और फ्लो कंट्रोल) दोनों के लिए नियंत्रण अनुक्रमों को सामान्य चरित्र इनपुट के रूप में माना जाता है। टर्मिनल से पढ़ने वाले एप्लिकेशन प्रोग्राम तुरंत वर्ण प्राप्त करते हैं, और पूरी वर्ण धारा को बिना किसी बदलाव के प्राप्त करते हैं, जैसे कि यह टर्मिनल डिवाइस से ही आया था। पोसिक्स टर्मिनल इंटरफेस में, इन मोड को केवल दो इनपुट मोड की एक प्रणाली द्वारा प्रतिस्थापित किया गया हैः कैनॉनिकल और गैर-कैनॉनिकल। पोसिक्स टर्मिनल इंटरफेस में संकेत उत्पन्न करने वाले विशेष वर्णों का संचालन इनपुट मोड से स्वतंत्र है, और इसे अलग से नियंत्रित किया जा सकता है। नियंत्रण टर्मिनल सातवें संस्करण में यूनिक्स में कोई अंतिम कार्य नियंत्रण नहीं था और एक प्रक्रिया समूह को वह नहीं माना जाता था जो आजकल माना जाता है। प्रणाली में प्रत्येक प्रक्रिया में या तो एक एकल नियंत्रण टर्मिनल था, या कोई नियंत्रण टर्मिनल नहीं था। एक प्रक्रिया अपने नियंत्रण टर्मिनल को अपने मूल से विरासत में प्राप्त करती है। एक नियंत्रक टर्मिनल तब प्राप्त किया गया था जब कोई नियंत्रण टर्मिनल ओपन () के साथ एक प्रक्रिया एक टर्मिनल डिवाइस फ़ाइल है जो पहले से ही किसी अन्य प्रक्रिया के लिए नियंत्रण टर्मिनल नहीं है। समान नियंत्रण टर्मिनल वाली सभी प्रक्रियाएँ एक ही प्रक्रिया समूह का हिस्सा थीं। एप्लीकेशन प्रोग्रामिंग इंटरफेस इन सभी तरीकों और नियंत्रण वर्णों को पूछताछ और संशोधित करने के लिए प्रोग्रामेटिक इंटरफेस ioctl () सिस्टम कॉल था। (इसने छठे संस्करण यूनिक्स के एसटीआई () और जीटीआई () सिस्टम कॉल को बदल दिया।) हालांकि "मिटाने" और "मारने" वर्ण अपने डिफ़ॉल्ट से संशोधित किए जा सकते थे और, सातवें संस्करण के विकास जड़ता के बाद कई वर्षों तक इसका मतलब था कि वे टर्मिनल डिवाइस ड्राइवरों में पूर्व-निर्धारित डिफ़ॉल्ट थे, और कई यूनिक्स सिस्टम पर, जो केवल लॉगिन प्रक्रिया के हिस्से के रूप में टर्मिनल डिवाइस सेटिंग्स को बदल देते थे, सिस्टम लॉगिन स्क्रिप्ट में जो उपयोगकर्ता के उपयोगकर्ता नाम और पासवर्ड दर्ज करने के बाद चलती थी, लॉगिन और पासवर्ड संकेतों पर किसी भी गलती को टेलीटाइपराइटर टर्मिनलों से विरासत में मिले ऐतिहासिक संपादन प्रमुख वर्णों का उपयोग करके ठीक किया जाना था। प्रतीकात्मक स्थिरांक, जिनके मान निश्चित और परिभाषित थे, और प्रोग्रामेटिक इंटरफेस की डेटा संरचना परिभाषाओं को sgtty.h सिस्टम हेडर में परिभाषित किया गया था। ioctl () संचालन ioctl () संचालन इस प्रकार थेः टर्मिनल सिस्टम कॉल द्वारा उपयोग की जाने वाली एक डेटा संरचना sgttib संरचना है, जिसकी C प्रोग्रामिंग भाषा की परिभाषा इस प्रकार हैः संरचना sgttib {चार sg _ ispeed;// इनपुट गति चार sg _ ospeed;// आउटपुट गति चार sg _ erase;// चरित्र चार sg _ कॊल्ल को मिटाएं;// चरित्र चार sg _ फ्लैग को मारें;// कंट्रोल फ्लैग को मारें; पोसिक्स टर्मिनल इंटरफेस के विपरीत, सातवें संस्करण यूनिक्स टर्मिनल इंटरफेस ने सीधे डेटा संरचना में इनपुट और आउटपुट बॉड दरों को दर्ज किया। sg _ ispeed और sg _ ospeed क्षेत्रों में इनपुट और आउटपुट की गति DEC DH-11 की थी, और 0 से 15 तक की संख्याएँ थीं, जिन्हें प्रतीकात्मक स्थिरांक (आरोही क्रम में) B0, B50, B75, B110, B134, B150, B200, B300, B 600, B1200, B1800, B2400, B4800, B9600, EXTA और EXTB द्वारा दर्शाया गया था, जहाँ बॉड दर नाम के समान थी (अंतिम दो "बाहरी A" और "बाहरी B" होने के साथ)। शून्य की बॉड दर निर्धारित करने से टर्मिनल चालक को एक मॉडेम को बंद करने के लिए मजबूर होना पड़ा (यदि टर्मिनल एक मॉडेम उपकरण था)। एसजी _ इरेज़ और एसजी _ किल फ़ील्ड केवल "इरेज़" और "किल" वर्णों के वर्ण मान थे, जो क्रमशः "और" के लिए (एएससीआईआई) मानों के लिए डिफ़ॉल्ट थे। sg _ flags फ़ील्ड ने विभिन्न इनपुट और आउटपुट नियंत्रण फ़्लैग निर्दिष्ट किए हैं, जैसा कि निम्नलिखित तालिका में है। टीचार डेटा संरचना टर्मिनल सिस्टम कॉल द्वारा उपयोग की जाने वाली एक डेटा संरचना टीचार संरचना है, जिसकी सी प्रोग्रामिंग भाषा की परिभाषा इस प्रकार हैः संरचना टीचार {चार टी _ इंट्रैक;// इंटरप्ट चार टी _ क्विट;// क्विट चार टी _ स्टार्ट;// स्टार्ट चार टी _ स्टॉप;// स्टॉप चार टी _ ईओएफसी;// फाइल चार टी _ ब्रेक का अंत;// ब्रेक (समान प्रभाव के साथ हार्डवायर्ड एलएफ चरित्र का विकल्प); इन क्षेत्रों के मान विभिन्न प्रोग्रामेटिक रूप से विन्यास योग्य विशेष वर्णों के मान थे। किसी भी क्षेत्र में ए-1 मान ने अंतिम चालक द्वारा इसकी पहचान को अक्षम कर दिया। संदर्भ ग्रंथ सूची अनुप्रयोग प्रोग्रामिंग इंटरफेस बेल लैब्स यूनिसेस बर्कले सॉफ्टवेयर डिस्ट्रीब्यूशन कंप्यूटर टर्मिनल तकनीकी संचार