POSIX क्या है? मैंने विकिपीडिया लेख पढ़ा है और जब भी मेरा कार्यकाल होता है मैं इसे हर बार पढ़ता हूं। तथ्य यह है कि मैं वास्तव में कभी नहीं समझ पाया कि यह क्या है।
क्या कोई मुझे "POSIX की आवश्यकता" भी समझाकर मुझे समझा सकता है?
POSIX क्या है? मैंने विकिपीडिया लेख पढ़ा है और जब भी मेरा कार्यकाल होता है मैं इसे हर बार पढ़ता हूं। तथ्य यह है कि मैं वास्तव में कभी नहीं समझ पाया कि यह क्या है।
क्या कोई मुझे "POSIX की आवश्यकता" भी समझाकर मुझे समझा सकता है?
जवाबों:
POSIX मानकों का एक परिवार है, जिसे यूईई-वाई ऑपरेटिंग सिस्टम द्वारा प्रदान किए गए एप्लिकेशन प्रोग्रामिंग इंटरफेस (और कमांड इश्यू, जैसे कमांडलाइन शेल यूटिलिटीज) को स्पष्ट करने और बनाने के लिए IEEE द्वारा निर्दिष्ट किया गया है। जब आप POSIX मानकों पर भरोसा करने के लिए अपने कार्यक्रम लिखते हैं, तो आप यूनिक्स डेरिवेटिव्स के एक बड़े परिवार (लिनक्स सहित, लेकिन इसे तक सीमित नहीं हैं) के बीच आसानी से उन्हें पोर्ट करने में सक्षम होने के लिए सुनिश्चित हो सकते हैं! यदि आप कुछ लिनक्स एपीआई का उपयोग करते हैं, जो कि पॉज़िक्स के हिस्से के रूप में मानकीकृत नहीं है, तो आपके पास भविष्य में अन्य यूनिक्स-वाई सिस्टम (जैसे, मैकओएसएक्स) पर उस प्रोग्राम या लाइब्रेरी को पोर्ट करना चाहते हैं, तो आपके पास एक कठिन समय होगा।
Microsoft's market share on desktops, at least, makes it "what the world follows"
- दिलचस्प है कि 2009 की इस टिप्पणी के बाद से चीजें कितनी बदल गई हैं :)
POSIX 7 सबसे महत्वपूर्ण चीजें परिभाषित करता है
एएनएसआई सी का विस्तार बहुत कुछ इस तरह से है:
mkdir
, dirname
, symlink
, readlink
, link
(hardlinks), poll()
, stat
, sync
,nftw()
fork
, execl
, wait
, pipe
, semaphors sem_*
, साझा स्मृति ( shm_*
), kill
, समय निर्धारण मानकों ( nice
, sched_*
), sleep
, mkfifo
,setpgid()
socket()
mmap
, mlock
, mprotect
, madvise
,brk()
reg*
)वे एपीआई भी अंतर्निहित प्रणाली अवधारणाओं को निर्धारित करते हैं जिन पर वे निर्भर करते हैं, उदाहरण के fork
लिए एक प्रक्रिया की अवधारणा की आवश्यकता होती है।
कई लिनक्स सिस्टम कॉल एक विशिष्ट POSIX C API फ़ंक्शन को कार्यान्वित करने और Linux के अनुरूप बनाने के लिए sys_write
मौजूद हैं sys_read
, उदाहरण के लिए , ... उनमें से कई syscalls में हालांकि Linux- विशिष्ट एक्सटेंशन भी हैं।
प्रमुख लिनक्स डेस्कटॉप कार्यान्वयन: glibc, जो कई मामलों में सिर्फ सिस्टम कॉल के लिए एक उथला आवरण प्रदान करता है।
उदाहरण के लिए: cd
, ls
, echo
, ...
कई उपयोगिताओं एक संबंधित सी एपीआई समारोह के लिए प्रत्यक्ष खोल सामने के छोर हैं, उदाहरण के लिए mkdir
।
मेजर लिनक्स डेस्कटॉप कार्यान्वयन: छोटे लोगों के लिए GNU coreutils, बड़े लोगों के लिए अलग जीएनयू परियोजनाओं: sed
, grep
, awk
, ... कुछ CLI उपयोगिताओं बैश द्वारा कार्यान्वित किया जाता बनाया-इन के रूप में ।
उदाहरण के लिए, a=b; echo "$a"
प्रमुख लिनक्स डेस्कटॉप कार्यान्वयन: जीएनयू बैश ।
जैसे: HOME
, PATH
।
PATH
खोज शब्दार्थ निर्दिष्ट हैं , जिसमें स्लैश PATH
खोज को कैसे रोकते हैं ।
कार्यक्रम से बाहर निकलने की स्थिति
एएनएसआई सी कहती है 0
या EXIT_SUCCESS
सफलता के लिए, EXIT_FAILURE
विफलता के लिए, और बाकी क्रियान्वयन को परिभाषित करता है।
POSIX जोड़ता है:
126
: कमांड मिली, लेकिन निष्पादन योग्य नहीं है।
127
: आदेश नहीं मिला।
> 128
: एक संकेत द्वारा समाप्त।
लेकिन POSIX 128 + SIGNAL_ID
Bash द्वारा उपयोग किए गए नियम को निर्दिष्ट करने के लिए प्रतीत नहीं होता है : /unix/99112/default-exit-code-when-process-is-terminated
दो प्रकार हैं: BRE (बेसिक) और ERE (विस्तारित)। बुनियादी को हटा दिया गया है और केवल एपीआई को तोड़ने के लिए नहीं रखा गया है।
जिन्हें C API फ़ंक्शंस द्वारा कार्यान्वित किया जाता है, और CLI उपयोगिताओं में उपयोग किया जाता है, उदाहरण के लिए grep
, डिफ़ॉल्ट रूप से BRE और EREs को स्वीकार करता है -E
।
उदाहरण के लिए: echo 'a.1' | grep -E 'a.[[:digit:]]'
प्रमुख लिनक्स कार्यान्वयन: glibc regex.h के तहत कार्यों को कार्यान्वित करता है जो grep
बैकएंड के रूप में उपयोग कर सकते हैं।
उदाहरण के लिए: /dev/null
,/tmp
लिनक्स FHS बहुत POSIX का विस्तार करता है।
/
पथ विभाजक हैNUL
उपयोग नहीं किया जा सकता.
है cwd
, ..
माता-पिताa-zA-Z0-9._-
यह भी देखें: फाइलसिस्टम के लिए पॉज़िक्स अनुपालन क्या है?
कमांड लाइन उपयोगिता एपीआई सम्मेलनों
अनिवार्य नहीं, POSIX द्वारा उपयोग किया जाता है, लेकिन लगभग कहीं नहीं, विशेष रूप से GNU में नहीं। लेकिन सच है, यह बहुत अधिक प्रतिबंधात्मक है, उदाहरण के लिए एकल अक्षर के झंडे (केवल -a
), कोई डबल हाइफ़न लंबे संस्करण (जैसे --all
) नहीं।
कुछ व्यापक रूप से इस्तेमाल किए जाने वाले सम्मेलन:
-
जहां फ़ाइल अपेक्षित है स्टड का अर्थ है--
झंडे को समाप्त करता है, उदाहरण ls -- -l
के लिए एक निर्देशिका की सूची-l
यह भी देखें: क्या लिनक्स कमांड लाइन स्विच और तर्कों के लिए मानक हैं?
"POSIX ACLs" (एक्सेस कंट्रोल लिस्ट), जैसे कि बैकएंड के लिए उपयोग किया जाता है setfacl
।
यह वापस ले लिया गया है, लेकिन यह कई OSes में लागू किया गया था, सहित के साथ लिनक्स मेंsetxattr
।
POSIX के अनुरूप कौन है?
कई सिस्टम POSIX को बारीकी से फॉलो करते हैं, लेकिन कुछ वास्तव में ओपन ग्रुप द्वारा प्रमाणित होते हैं जो मानक बनाए रखता है। उल्लेखनीय प्रमाणित लोगों में शामिल हैं:
अधिकांश लिनक्स डिस्ट्रोस बहुत आज्ञाकारी हैं, लेकिन प्रमाणित नहीं हैं क्योंकि वे अनुपालन जांच का भुगतान नहीं करना चाहते हैं। इन्सपुर के K-UX और Huawei के EulerOS दो प्रमाणित उदाहरण हैं।
प्रमाणित सिस्टम की आधिकारिक सूची यहां मिलेगी: https://www.opengroup.org/openbrand/register/ और विकी पेज पर भी ।
खिड़कियाँ
विंडोज ने अपने कुछ पेशेवर वितरणों पर POSIX को लागू किया।
चूंकि यह एक वैकल्पिक सुविधा थी, इसलिए प्रोग्रामर अधिकांश अंतिम उपयोगकर्ता अनुप्रयोगों के लिए इस पर भरोसा नहीं कर सकते थे।
Windows 8 में समर्थन को हटा दिया गया था:
2016 में एक नया आधिकारिक लिनक्स जैसा एपीआई "लिनक्स के लिए विंडोज सबसिस्टम" घोषित किया गया था। इसमें Linux सिस्टम कॉल, ELF रनिंग, /proc
फाइल सिस्टम के कुछ हिस्सों , Bash, GCC, (TODO संभावना glibc?), apt-get
और अधिक शामिल हैं: https://channel9.msdn.com/Events/Build/2016/P488 मेरा मानना है कि यह विंडोज को बहुत चलाने की अनुमति देगा, यदि सभी नहीं, तो POSIX का। हालांकि, यह अंतिम उपयोगकर्ताओं के बजाय डेवलपर्स / तैनाती पर केंद्रित है। विशेष रूप से, विंडोज GUI तक पहुंच की अनुमति देने की कोई योजना नहीं थी।
आधिकारिक Microsoft POSIX संगतता का ऐतिहासिक अवलोकन: http://brianreiter.org/2010/08/24/the-sad-history-of-the-microsoft-posix-subsystem/
Cygwin एक प्रसिद्ध GPL थर्ड-पार्टी प्रोजेक्ट है, जिसके लिए विंडोज के लिए "पर्याप्त POSIX API कार्यक्षमता प्रदान करता है", लेकिन इसके लिए आवश्यक है कि आप "अपने एप्लिकेशन को स्रोत से पुनर्निर्माण करें यदि आप चाहते हैं कि वह विंडोज पर चले"। MSYS2 एक संबंधित परियोजना है जो Cygwin के शीर्ष पर अधिक कार्यक्षमता जोड़ने के लिए लगता है।
एंड्रॉयड
Android की अपनी C लाइब्रेरी (Bionic) है जो POSIX को Android O के रूप में पूरी तरह से समर्थन नहीं करती है: क्या Android POSIX- संगत है?
बोनस स्तर
लिनक्स स्टैंडर्ड बेस आगे POSIX फैली हुई है।
गैर-फ़्रेम इंडेक्स का उपयोग करें, वे बहुत अधिक पठनीय और खोज योग्य हैं: http://pubs.opengroup.org/onlinepubs/9699919799/nfindex.html
Grepping के लिए HTML पृष्ठों का पूर्ण ज़िपित संस्करण प्राप्त करें: POSIX C API फ़ंक्शंस की सूची कहाँ है?
POSIX है:
POSIX (उच्चारण / ˈpɒz /ks /) या "पोर्टेबल ऑपरेटिंग सिस्टम इंटरफ़ेस [यूनिक्स के लिए]" 1 आईईईई द्वारा निर्दिष्ट संबंधित मानकों के एक परिवार का नाम है, जो अनुप्रयोग प्रोग्रामिंग इंटरफ़ेस (एपीआई) को परिभाषित करने के लिए, सॉफ्टवेयर के लिए शेल और उपयोगिताओं इंटरफेस के साथ है। यूनिक्स ऑपरेटिंग सिस्टम के वेरिएंट के साथ संगत, हालांकि मानक किसी भी ऑपरेटिंग सिस्टम पर लागू हो सकता है।
मूल रूप से यह एक (ज्यादातर) आम एपीआई और उपयोगिताओं द्वारा UNIX के विभिन्न स्वादों के विकास और उपयोग के दर्द को कम करने के उपायों का एक सेट था। सीमित POSIX अनुपालन भी विंडोज के विभिन्न संस्करणों के लिए बढ़ाया गया।
मुझे कलीसिया को "अनौपचारिक" स्पष्टीकरण देने दें।
POSIX मानकों का एक सेट है जो "UNIX" और UNIX जैसी प्रणालियों को उन लोगों से अलग करने का प्रयास करता है जो उनके साथ असंगत हैं। इसे अमेरिकी सरकार ने खरीद के उद्देश्य से बनाया था। यह विचार था कि अमेरिकी संघीय खरीद को विभिन्न प्रकार की बोलियों और अनुबंधों के लिए कानूनी रूप से आवश्यकताओं को निर्दिष्ट करने के लिए एक तरीके की आवश्यकता होती है, जिसका उपयोग उन प्रणालियों को बाहर करने के लिए किया जा सकता है जिनमें किसी मौजूदा कोड आधार या प्रोग्रामिंग कर्मचारी पोर्टेबल नहीं होंगे।
चूंकि POSIX को पोस्ट फैक्टो लिखा गया था ... प्रतिस्पर्धा प्रणालियों के समान समान सेट का वर्णन करने के लिए ... यह इस तरह से नहीं लिखा गया था जिसे लागू किया जा सके।
इसलिए, उदाहरण के लिए, Microsoft की NT को कुछ बोलियों के लिए अर्हता प्राप्त करने के लिए पर्याप्त POSIX अनुरूपता के साथ लिखा गया था ... भले ही POSIX उपतंत्र अनिवार्य रूप से व्यावहारिक पोर्टेबिलिटी और UNIX सिस्टम के साथ संगतता के मामले में बेकार था।
UNIX के लिए कई अन्य मानक दशकों में लिखे गए हैं। Spec1170 (ग्यारह सौ और सत्तर फंक्शन कॉल निर्दिष्ट किया गया है, जो कि मज़बूती से लागू किया जाना था) और SUS (एकल यूनिक्स विशिष्टता) के विभिन्न अवतार।
अधिकांश भाग के लिए ये "मानक" किसी भी व्यावहारिक तकनीकी अनुप्रयोग के लिए अपर्याप्त हैं। वे तर्क, कानूनी तकरार और अन्य दुविधापूर्ण कारणों के लिए मौजूद हैं।
POSIX ऑपरेटिंग सिस्टम के लिए एक मानक है जिसे क्रॉस-प्लेटफ़ॉर्म सॉफ़्टवेयर लिखना आसान बनाना था। यह यूनिक्स की दुनिया में विशेष रूप से बड़ी बात है।
POSIX IEEE और द ओपन ग्रुप द्वारा निर्धारित मानकों का एक समूह है जो बताता है कि एक आदर्श यूनिक्स कैसे संचालित होगा। प्रोग्रामर, उपयोगकर्ता और प्रशासक सभी POSIX दस्तावेज़ से परिचित हो सकते हैं, और POSIX- शिकायत यूनिक्स से अपेक्षा कर सकते हैं कि वे सभी मानक सुविधाएं प्रदान करें।
चूंकि हर यूनिक्स चीजों को थोड़ा अलग तरीके से करता है - सोलारिस, मैक ओएस एक्स, आईआरआईएक्स, बीएसडी, और लिनक्स सभी में उनकी क्विरक्स हैं - पीओएसआईएक्स उद्योग में उन लोगों के लिए विशेष रूप से उपयोगी है क्योंकि यह एक मानक वातावरण को संचालित करने के लिए परिभाषित करता है। उदाहरण के लिए। C लाइब्रेरी में अधिकांश कार्य POSIX पर आधारित हैं; इसलिए, एक प्रोग्रामर अपने आवेदन में एक का उपयोग कर सकता है और यह उम्मीद कर सकता है कि वह अधिकांश यूनियनों के साथ ऐसा ही व्यवहार करे।
हालांकि, यूनिक्स के विचलन क्षेत्र आमतौर पर मानक लोगों के बजाय फोकस होते हैं।
POSIX के बारे में महान बात यह है कि आप इसे स्वयं पढ़ने के लिए स्वागत करते हैं:
अंक 7 को POSIX.1-2008 के रूप में जाना जाता है, और वहाँ नई चीजें हैं - हालांकि, POSIX.1 के लिए Google-फू और इस तरह से आप यूनिक्स के पीछे के पूरे इतिहास को देख पाएंगे।
1985 में, कंप्यूटर उद्योग भर की कंपनियों के व्यक्तियों ने POSIX (कंप्यूटर वातावरण के लिए पोर्टेबल ऑपरेटिंग सिस्टम इंटरफ़ेस) मानक विकसित करने के लिए एक साथ जुड़ गए, जो कि काफी हद तक UNIX सिस्टम V इंटरफ़ेस परिभाषा (SVID) और अन्य पूर्व मानकीकरण प्रयासों पर आधारित है। ये प्रयास अमेरिकी सरकार द्वारा किए गए थे, जिन्हें अपने प्रशिक्षण और खरीद लागत को कम करने के लिए एक मानक कंप्यूटिंग वातावरण की आवश्यकता थी। 1988 में जारी, POSIX IEEE मानकों का एक समूह है जो एक ऑपरेटिंग सिस्टम के लिए एपीआई, शेल और यूटिलिटी इंटरफेस को परिभाषित करता है। यद्यपि यूनिक्स-जैसी प्रणालियों के उद्देश्य से, मानक किसी भी संगत ऑपरेटिंग सिस्टम पर लागू हो सकते हैं। अब जब इन स्टैन-डैड्स ने स्वीकृति प्राप्त कर ली है, सॉफ्टवेयर डेवलपर्स उन अनुप्रयोगों को विकसित करने में सक्षम हैं जो यूनिक्स, लिनक्स के सभी अनुरूप संस्करणों पर चलते हैं।
पुस्तक से: ए प्रैक्टिकल गाइड टू लिनक्स
Posix एक OS के रूप में अधिक है, यह एक "OS मानक" है। आप इसे एक काल्पनिक ओएस के रूप में कल्पना कर सकते हैं, जो वास्तव में मौजूद नहीं है, लेकिन इसका एक दस्तावेज है। ये कागजात "पॉज़िक्स मानक" हैं, जिन्हें आईईईई द्वारा परिभाषित किया गया है, जो यूएसए का बड़ा मानक संगठन है। इस विनिर्देशन को लागू करने वाले OS "Posix- अनुरूप" हैं।
सरकारी विनियम अपने निवेश में पॉज़िक्स-अनुरूप समाधान पसंद करते हैं, इस प्रकार पॉज़िक्स-अनुरूप होने से विशेष रूप से यूएसए की बड़ी आईटी कंपनियों के लिए महत्वपूर्ण वित्तीय लाभ होता है।
एक ओएस के लिए इनाम पूरी तरह से पॉज़िक्स कंप्लेंट हो रहा है, यह गारंटी है कि यह सभी पॉज़िक्स-कंप्लेंट एप्लिकेशन को मूल रूप से संकलित और चलाएगा।
लिनक्स सबसे प्रसिद्ध है। OSX, Solaris, NetBSD और Windows NT यहां भी खेलते हैं। Free- और OpenBSD केवल "लगभग" पॉज़िक्स-आज्ञाकारी हैं। इस सरकारी विनियमन से बचने के लिए WinNT का सकारात्मक-अनुपालन केवल एक छद्म समाधान है।
यह मानक यूनिक्स जैसे ऑपरेटिंग सिस्टम के लिए एक सामान्य आधार प्रदान करता है। यह निर्दिष्ट करता है कि शेल को कैसे काम करना चाहिए, ls और grep जैसी कमांड से क्या अपेक्षा करनी चाहिए, और कई सी लाइब्रेरी जो कि सी लेखक उपलब्ध होने की उम्मीद कर सकते हैं।
उदाहरण के लिए, कमांड-लाइन उपयोगकर्ता जो पाइप एक साथ कमांड का उपयोग करने के लिए उपयोग करते हैं, उन्हें यहां विस्तार से निर्दिष्ट किया गया है, जिसका अर्थ है कि सी का पोपेन (पाइप खुला) फ़ंक्शन पोसिक्स-मानक है, आईएसओ सी-मानक नहीं।
POSIX पोर्टेबल ऑपरेटिंग सिस्टम इंटरफ़ेस के लिए खड़ा है, और एक IEEE मानक है जो अनुप्रयोग पोर्टेबिलिटी को सुविधाजनक बनाने के लिए डिज़ाइन किया गया है। POSIX विक्रेताओं का एक संघ द्वारा UNIX का एकल मानक संस्करण बनाने का एक प्रयास है।
POSIX एक ऑपरेटिंग सिस्टम या प्रोग्राम के लिए मानकों के सेट को परिभाषित करता है। लक्ष्य नया सॉफ्टवेयर लिखना है जो UNIX जैसी प्रणालियों के साथ संगत है।
उदाहरण के लिए लिनक्स पर चलने वाला एक प्रोग्राम भी संकलित किया जा सकता है और अन्य UNIX- जैसे सिस्टम जैसे Solaris, HP-UX और AIX आदि पर चलाया जा सकता है।
सबसे लोकप्रिय उदाहरण हैं GNU Bash
जो 100% POSIX अनुपालन और gawk
उपयोगिता है।
पॉज़िक्स इंटरऑपरेबिलिटी, पोर्टेबिलिटी और अन्य क्षेत्रों जैसे कांटा, अनुमति और फाइल सिस्टम मानकों जैसे / आदि, / var, / usr और इतने पर के रूप में नियंत्रित करता है । इसलिए, जब डेवलपर्स पॉज़िक्स कंप्लेंट सिस्टम जैसे उदाहरण लिनक्स के तहत एक प्रोग्राम लिखते हैं, तो यह आम तौर पर होता है, हमेशा नहीं, किसी अन्य पॉज़िक्स कंप्लेंट सिस्टम जैसे आईबीएम के एआईएक्स सिस्टम या यूनिक्स के अन्य वाणिज्यिक वेरिएंट पर चलने की गारंटी। पॉज़िक्स एक अच्छी बात है, क्योंकि यह अधिकतम पोर्टेबिलिटी के लिए सॉफ़्टवेयर विकास को आसान बनाता है जिसके लिए यह प्रयास करता है। आशा है कि यह उत्तर समझ में आता है।
मेरी गलती को इंगित करने के लिए जेड स्मिथ और टिंकर्टिम को धन्यवाद - मेरा बुरा !!! :(
एक विनिर्देश (खाका) कैसे देर से यूनिक्स ओएस के साथ एक ओएस संगत बनाने के लिए (भगवान उसे आशीर्वाद दे सकता है!)। यही कारण है कि macOS और GNU / Linux में बहुत समान टर्मिनल कमांड लाइन, GUI, लाइब्रेरी इत्यादि हैं, क्योंकि इन दोनों को POSIX ब्लूप्रिंट के अनुसार डिजाइन किया गया था।
POSIX इंजीनियर और प्रोग्रामर को यह नहीं बताता है कि कोड कैसे बनाया जाए लेकिन कोड क्या है।
POSIX के बारे में कुछ तथ्य जो इतने उज्ज्वल नहीं हैं।
POSIX भी सिस्टम कॉल इंटरफेस या एपीआई है, और यह लगभग 30 साल पुराना है।
यह एकल सीपीयू के साथ एकल कंप्यूटर का उपयोग करते हुए, स्थानीय भंडारण के लिए क्रमबद्ध डेटा एक्सेस के लिए डिज़ाइन किया गया था ।
डिजाइन द्वारा POSIX में सुरक्षा एक प्रमुख चिंता का विषय नहीं था, जो वर्षों में कई दौड़ हालत के हमलों के लिए अग्रणी था और प्रोग्रामर को इन सीमाओं के आसपास काम करने के लिए मजबूर करता था।
गंभीर कीड़े अभी भी खोजे जा रहे हैं, ऐसे कीड़े जिन्हें अधिक सुरक्षित पोसिक्स एपीआई डिजाइन के साथ टाल दिया जा सकता था।
POSIX को उम्मीद है कि उपयोगकर्ता एक समय में एक समकालिक कॉल जारी कर सकते हैं और अगले जारी करने से पहले इसके परिणामों की प्रतीक्षा कर सकते हैं। आज के प्रोग्रामर समग्र थ्रूपुट में सुधार करने के लिए एक समय में कई अतुल्यकालिक अनुरोध जारी करने की उम्मीद करते हैं।
यह समकालिक एपीआई दूरस्थ और क्लाउड ऑब्जेक्ट्स तक पहुंचने के लिए विशेष रूप से खराब है, जहां उच्च विलंबता मायने रखती है।