POSIX(Portable Operating System Interface)是Unix系統的一個設計標准。當年最早的Unix,源代碼流傳出去了,加上早期的Unix不夠完善,於是之后出現了好些獨立開發的與Unix基本兼容但又不完全兼容的OS,通稱Unix-like OS。局面非常混亂,為了提高兼容性和應用程序的可移植性,標准化Unix-like OS,提出了大家都應該遵守的POSIX標准。后來,Unix這個名字成為了商標,只有花錢進行POSIX標准兼容性測試並通過了的OS,才能稱為Unix,其余的OS,最多稱為Unix-like OS或者*nix OS。
遵循這個標准的好處是軟件可以跨平台。
- Windows從WinNT開始就有兼容POSIX的考慮。這是因為當年在要求嚴格的領域,Unix地位比Windows高。為了把Unix用戶拉到Windows陣營而搞的。現在情況當然有變化,與當年大不相同了。
- 現在最新的Win10對 Linux/POSIX 支持好,則是因為Linux已經統治了廉價服務器市場。為了提高Windows的競爭力而搞的。
所以windows也支持就很容易理解了,那么多優秀的開源軟件,支持了這個這些軟件就可能有windows版本,就可以完善豐富windows下的軟件。
以下對於POSIX的介紹,來自《Linux內核設計與實現(第2版)》的第5章
一般情況下,應用程序通過應用編程接口(API)而不是直接通過系統調用來編程。這點很重要,因為應用程序使用的這種編程接口實際上並不需要和內核 提供的系統調用對應。一個API定義了一組應用程序使用的編程接口。它們可以實現成一個系統調用,也可以通過調用多個系統調用來實現,而完全不使用任何系統調用也不存在問題。實際上,API可以在各種不同的操作系統上實現,給應用程序提供完全相同的接口,而它們本身在這些系統上的實現卻可能迥異。
在Unix世界中,最流行的應用編程接口是基於POSIX標准的。從純技術的角度看,POSIX是由IEEE的一組標准組成,其目標是提供一套大體上基於Unix的可移植操作系統標准。Linux是與POSIX兼容的。
POSIX是說明API和系統調用之間關系的一個極好例子。在大多數Unix系統上,根據POSIX而定義的API函數和系統調用之間有着直接關 系。實際上,POSIX標准就是仿照早期Unix系統的界面建立的。
- 另一方面,許多操作系統,像Windows NT,盡管和Unix沒有什么關系,也提供了與POSIX兼容的庫。
- Linux的系統調用像大多數Unix系統一樣,作為C庫的一部分提供。C庫實現了Unix系統的主要API,包括標准C庫函數和系統調用。所有的C程序都可以使用C庫,而由於C語言本身的特點,其他語言也可以很方便地把它們封裝起來使用。此外,C庫提供了POSIX的絕大部分API。
參考資料
===========
POSIX是什么標准?為什么Windows也要支持它?
https://www.zhihu.com/question/21048638
我從來沒有真正明白:什么是POSIX?