สิ่งที่สำคัญที่สุดPOSIX 7กำหนด
C API
ขยาย ANSI 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*
)
API เหล่านั้นยังกำหนดแนวคิดระบบพื้นฐานที่ต้องพึ่งพาเช่นfork
ต้องการแนวคิดของกระบวนการ
หลายลินุกซ์สายระบบที่มีอยู่เพื่อใช้ฟังก์ชัน API POSIX C ที่เฉพาะเจาะจงและทำให้ลินุกซ์ที่สอดคล้องเช่นsys_write
, sys_read
... หลาย syscalls เหล่านั้นยังมีส่วนขยายของลินุกซ์เฉพาะ แต่
การติดตั้งบนเดสก์ท็อปหลักของ Linux: glibc ซึ่งในหลาย ๆ กรณีจะมีตัวห่อหุ้มตื้น ๆ สำหรับการเรียกระบบ
ยูทิลิตี้ CLI
ตัวอย่าง: cd
, ls
, echo
...
สาธารณูปโภคหลายอย่างที่ด้านหน้าเปลือกโดยตรงสิ้นสุดลงสอดคล้องฟังก์ชัน API C mkdir
เช่น
ที่สำคัญการดำเนินงานลินุกซ์สก์ท็อป: GNU coreutils สำหรับคนที่มีขนาดเล็กโครงการ GNU แยกต่างหากสำหรับคนใหญ่: sed
, grep
, awk
... บางสาธารณูปโภค CLI จะดำเนินการโดยทุบตีเป็นตัว -ins
ภาษาของเชลล์
เช่น, a=b; echo "$a"
ที่สำคัญการใช้งานลินุกซ์: GNU ทุบตี
ตัวแปรสภาพแวดล้อม
HOME
เช่น PATH
,
PATH
ความหมายการค้นหาที่ระบุไว้รวมทั้งวิธีการป้องกันไม่ให้ทับPATH
ค้นหา
สถานะการออกจากโปรแกรม
ANSI C พูด0
หรือEXIT_SUCCESS
เพื่อความสำเร็จEXIT_FAILURE
สำหรับความล้มเหลวและออกจากการใช้งานที่เหลือ
POSIX เพิ่ม:
การแสดงออกปกติ
มีสองประเภทคือ BRE (พื้นฐาน) และ ERE (ขยาย) พื้นฐานเลิกใช้แล้วและเก็บไว้เพื่อไม่ให้แตก API เท่านั้น
เหล่านั้นจะถูกนำมาใช้โดยฟังก์ชัน C API และใช้ตลอดทั้งสาธารณูปโภค CLI เช่นgrep
ยอมรับ Bres โดยค่าเริ่มต้นและ Eres -E
กับ
เช่น: echo 'a.1' | grep -E 'a.[[:digit:]]'
การใช้งาน Linux ที่สำคัญ: glibc ใช้ฟังก์ชั่นภายใต้regex.hซึ่งโปรแกรมเช่นgrep
สามารถใช้เป็นแบ็กเอนด์
ไดเรกทอรี struture
เช่น/dev/null
,/tmp
Linux FHSขยาย POSIX อย่างมาก
ชื่อไฟล์
/
เป็นตัวแยกเส้นทาง
NUL
ไม่สามารถใช้
.
เป็นcwd
, ..
ผู้ปกครอง
- ชื่อไฟล์แบบพกพา
- ใช้อย่างมากที่สุด 14 ตัวอักษรและ 256 ตัวอักษรสำหรับเส้นทางแบบเต็ม
- มีได้เพียง:
a-zA-Z0-9._-
ดูเพิ่มเติมที่: https://stackoverflow.com/questions/18550253/what-is-posix-compliance-for-filesystem
ข้อตกลง API ยูทิลิตี้บรรทัดคำสั่ง
ไม่ใช่ข้อบังคับที่ใช้โดย POSIX แต่แทบจะไม่มีที่อื่นเลยโดยเฉพาะใน GNU แต่จริงมันมีข้อ จำกัด เกินไปเช่นเดียวกับตัวอักษรธงเท่านั้น (เช่น-a
) ไม่มีรุ่นที่ใช้ยัติภังค์ยาวสองเท่า (เช่น--all
)
อนุสัญญาที่ใช้กันอย่างแพร่หลายไม่กี่:
-
หมายถึง stdin ที่คาดว่าไฟล์
--
ยุติการตั้งค่าสถานะเช่นls -- -l
เพื่อแสดงรายการไดเรกทอรีที่มีชื่อ-l
ดูเพิ่มเติมที่: https://stackoverflow.com/questions/8957222/are-there-standards-for-linux-command-line-switches-and-arguments
"POSIX ACLs" (การควบคุมการเข้าถึงรายการ) setfacl
เช่นที่ใช้เป็นแบ็กเอนด์สำหรับ
นี้ถูกถอนออกแต่มันก็ถูกนำมาใช้ในหลายระบบปฏิบัติการรวมทั้งในลินุกซ์ด้วยsetxattr
เป็นไปตาม POSIX ใคร
ระบบจำนวนมากติดตาม POSIX อย่างใกล้ชิด แต่มีน้อยคนที่ได้รับการรับรองโดย Open Group ที่รักษามาตรฐาน คนที่ได้รับการรับรองที่โดดเด่นรวมถึง:
Linux distros ส่วนใหญ่นั้นเข้ากันได้ดี แต่ไม่ผ่านการรับรองเพราะพวกเขาไม่ต้องการจ่ายการตรวจสอบการปฏิบัติตามกฎระเบียบ Inspur ของ K-UXและหัวเว่ย EulerOSเป็นสองตัวอย่างที่ผ่านการรับรอง
รายการอย่างเป็นทางการของระบบได้รับการรับรองพบได้ที่: https://www.opengroup.org/openbrand/register/และที่หน้าวิกิพีเดีย
ของ windows
Windows ใช้ POSIX กับการกระจายระดับมืออาชีพ
เนื่องจากมันเป็นคุณสมบัติเสริมโปรแกรมเมอร์จึงไม่สามารถใช้กับแอพพลิเคชั่นของผู้ใช้ส่วนใหญ่ได้
การสนับสนุนถูกเลิกใช้ใน Windows 8:
ในปี 2559 มีการประกาศ API คล้าย Linux ตัวใหม่ชื่อว่า "Windows Subsystem สำหรับ Linux" มันมีการเรียกระบบ Linux, การทำงานของเอลฟ์, บางส่วนของ/proc
ระบบไฟล์, Bash, GCC, (TODO น่าจะเป็น glibc?) apt-get
และอื่น ๆ : https://channel9.msdn.com/Events/Build/2016/P488ดังนั้นฉันจึงเชื่อว่ามัน จะอนุญาตให้ Windows เรียกใช้ POSIX จำนวนมากหากไม่ใช่ทั้งหมด อย่างไรก็ตามจะเน้นไปที่นักพัฒนา / การปรับใช้แทนที่จะเป็นผู้ใช้ปลายทาง โดยเฉพาะอย่างยิ่งไม่มีแผนจะอนุญาตให้เข้าถึง Windows GUI ได้
ภาพรวมประวัติของความเข้ากันได้อย่างเป็นทางการของ Microsoft POSIX: http://brianreiter.org/2010/08/24/the-sad-history-of-the-microsoft-posix-subsystem/
Cygwinเป็นโครงการบุคคลที่สามที่รู้จักกันดีของ GPL สำหรับ "ให้ฟังก์ชั่น POSIX API จำนวนมาก" สำหรับ Windows แต่ต้องการให้คุณ "สร้างแอปพลิเคชันของคุณจากแหล่งที่มาหากคุณต้องการให้ทำงานบน Windows" MSYS2เป็นโครงการที่เกี่ยวข้องที่ดูเหมือนว่าจะเพิ่มฟังก์ชั่นเพิ่มเติมที่ด้านบนของ Cygwin
Android
Android มีห้องสมุด C ของตัวเอง (Bionic) ซึ่งไม่รองรับ POSIX อย่างเต็มรูปแบบเนื่องจาก Android O: https://stackoverflow.com/questions/27604455/is-android-posix-compatible
ระดับโบนัส
ลินุกซ์มาตรฐานฐานต่อขยาย POSIX
ใช้ดัชนีที่ไม่ใช่เฟรมซึ่งสามารถอ่านและค้นหาได้มากขึ้น: http://pubs.opengroup.org/onlinepubs/9699919799/nfindex.html
รับเวอร์ชันเต็มซิปของหน้า HTML สำหรับ grepping: https://stackoverflow.com/questions/453993/is-there-a-listing-of-the-posix-api-functions/45832939#45832939