सबसे महत्वपूर्ण चीजें POSIX 7 परिभाषित करती हैं
C एपीआई
एएनएसआई सी का विस्तार बहुत कुछ इस तरह से है:
- अधिक फ़ाइल संचालन:
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
लिए एक प्रक्रिया की अवधारणा की आवश्यकता होती है।
कई Linux सिस्टम कॉल एक विशिष्ट 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
बैश द्वारा उपयोग किए गए नियम को निर्दिष्ट करने के लिए प्रतीत नहीं होता है : प्रक्रिया समाप्त होने पर डिफ़ॉल्ट निकास कोड?
नियमित अभिव्यक्ति
दो प्रकार हैं: BRE (बेसिक) और ERE (एक्सटेंडेड)। बुनियादी को हटा दिया गया है और केवल एपीआई को तोड़ने के लिए नहीं रखा गया है।
जिन्हें C API फ़ंक्शंस द्वारा कार्यान्वित किया जाता है, और CLI उपयोगिताओं में उपयोग किया जाता है, उदाहरण के लिए grep
, डिफ़ॉल्ट रूप से BREE और ERE के साथ स्वीकार करता है -E
।
उदाहरण के लिए: echo 'a.1' | grep -E 'a.[[:digit:]]'
प्रमुख लिनक्स कार्यान्वयन: glibc regex.h के तहत कार्यों को कार्यान्वित करता है जो grep
कि बैकएंड के रूप में उपयोग कर सकते हैं।
निर्देशिका सीवन
उदाहरण के लिए: /dev/null
,/tmp
लिनक्स FHS बहुत POSIX का विस्तार करता है।
फ़ाइल नाम
/
पथ विभाजक है
NUL
उपयोग नहीं किया जा सकता
.
है cwd
, ..
माता-पिता
- पोर्टेबल फ़ाइल नाम
- पूर्ण पथ के लिए अधिकतम 14 वर्णों और 256 पर उपयोग करें
- केवल शामिल हो सकते हैं:
a-zA-Z0-9._-
इसे भी देखें: https://stackoverflow.com/questions/18550253/what-is-posix-compliance-for-filesystem
कमांड लाइन उपयोगिता एपीआई सम्मेलनों
अनिवार्य नहीं, POSIX द्वारा उपयोग किया जाता है, लेकिन लगभग कहीं नहीं, विशेष रूप से GNU में नहीं। लेकिन यह सच है, यह बहुत अधिक प्रतिबंधात्मक है, उदाहरण के लिए एकल अक्षर के झंडे (केवल -a
), कोई डबल हाइफ़न लंबे संस्करण (जैसे --all
) नहीं।
कुछ व्यापक रूप से इस्तेमाल किए जाने वाले सम्मेलन:
-
जहां फ़ाइल अपेक्षित है, स्टड का अर्थ है
--
झंडे को समाप्त करता है, जैसे ls -- -l
कि एक निर्देशिका नाम की सूची-l
इसे भी देखें: https://stackoverflow.com/questions/8957222/are-there-standards-for-linux-command-line-switches-and-arguments
"POSIX ACLs" (एक्सेस कंट्रोल लिस्ट), जैसे कि बैकएंड के लिए उपयोग किया जाता है setfacl
।
यह वापस ले लिया गया है, लेकिन यह कई OSes में लागू किया गया था, सहित के साथ लिनक्स मेंsetxattr
।
POSIX के अनुरूप कौन है?
कई सिस्टम POSIX को बारीकी से फॉलो करते हैं, लेकिन कुछ वास्तव में ओपन ग्रुप द्वारा प्रमाणित होते हैं जो मानक बनाए रखता है। उल्लेखनीय प्रमाणित लोगों में शामिल हैं:
अधिकांश लिनक्स डिस्ट्रोस बहुत आज्ञाकारी हैं, लेकिन प्रमाणित नहीं हैं क्योंकि वे अनुपालन जांच का भुगतान नहीं करना चाहते हैं। इन्सपुर के K-UX और Huawei के EulerOS दो प्रमाणित उदाहरण हैं।
प्रमाणित सिस्टम की आधिकारिक सूची यहां मिलेगी: https://www.opengroup.org/openbrand/register/ और विकी पेज पर भी ।
खिड़कियाँ
विंडोज ने अपने कुछ पेशेवर वितरणों पर POSIX को लागू किया।
चूंकि यह एक वैकल्पिक सुविधा थी, इसलिए प्रोग्रामर अधिकांश अंतिम उपयोगकर्ता अनुप्रयोगों के लिए इस पर भरोसा नहीं कर सकते थे।
विंडोज 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 विंडोज के लिए एक अच्छी तरह से ज्ञात जीपीएल थर्ड-पार्टी प्रोजेक्ट है, जो विंडोज के लिए "पर्याप्त POSIX API कार्यक्षमता प्रदान करता है", लेकिन इसके लिए आवश्यक है कि यदि आप इसे विंडोज पर चलाना चाहते हैं तो अपने स्रोत से "अपने एप्लिकेशन को फिर से बनाएं"। MSYS2 एक संबंधित परियोजना है जो Cygwin के शीर्ष पर अधिक कार्यक्षमता जोड़ने के लिए लगता है।
एंड्रॉयड
Android की अपनी C लाइब्रेरी (Bionic) है, जो POSIX को Android O के रूप में पूरी तरह से समर्थन नहीं करती है: https://stackoverflow.com/questions/27604455/is-android-posix-compatible
बोनस स्तर
लिनक्स स्टैंडर्ड बेस आगे POSIX फैली हुई है।
गैर-फ़्रेम इंडेक्स का उपयोग करें, वे बहुत अधिक पठनीय और खोज योग्य हैं: http://pubs.opengroup.org/onlinepubs/9699919799/nfindex.html
Grepping के लिए HTML पृष्ठों का पूर्ण ज़िपित संस्करण प्राप्त करें: https://stackoverflow.com/questions/453993/is-there-a-listing-of-the-posix-ap-functions/45832339#45832939