(2)管道、FIFO、套接字、設備(比如終端、偽終端)都支持非阻塞模式。(因為無法通過open()來獲取管道和套接字的文件描述符。所以要啟用非阻塞標志,就必須使用fcntl()的F_SETFL命令)
(3)指定O_EXCL 標志調用open(),這確保了調用者就是文件的創建者
(4)指定O_APPEND標志調用open(),這確保了多個進程在對同一文件追加數據時不會覆蓋彼此的輸出
(5)fcntl()可以執行許多文件控制操作,其中包括:修改打開文件的狀態標志、復制文件描述符
(6)dup()和dup2()系統調用也能實現文件描述符的復制功能。
(7)UNIX歷史:
? ? ? ? AT&T發布了UNIX的第一版到第六版,沒有新的衍生分支系統。但已經包括了許多沿用至今程序的雛形:ar、cat、chmod、chown、cp、dc、ed、find、ln、ls、?
? ? ? ? mail、mkdir、mv、rm、sh、su、who
? ? ? ? AT&T發布了UNIX的第七版,攜帶了新的工具軟件:awk、make、sed、tar、uucp、Bourne shell,FORTRAN 77編譯器。第七版分裂出兩大分支:BSD、System V
? ? ? ? BSD:伯克利軟件發布,Berkeley Software Distribution ? ? ? 包含新特性:C shell、vi編輯器、伯克利快速文件系統、sendmail、Pascal語言編譯器,以及新型
? ? ? ? Digtial VAX架構的虛擬內存管理機制。 1983年4.2BSD包含了完整的TCP/IP實現,其中包括套接字API以及各種網絡工具。1993年最終發布版本4.4BSD
? ? ? ? 1994年經過與USL(UNIX System Laboratories 派生自AT&T的子公司,目前被Novell收購)的庭外和解,修正版權后發布了4.4BSD-Lite
? ? ? ? SVR4 : 1982年AT&T解體,AT&T的UNIX支撐團隊(UNIX Support Group--USG)于1989年發布System V Release4(SVR4),納入了BSD的諸多特性,
?? ? ? ? ? ? ? ? 包含聯網能力。
? ? ? ?
?? ? ? 商業性質的UNIX實現在各種硬件架構的應用:SUN的SunOS和Solaris;HP Tru64 UNIX;IBM AIX; HP-UX;NeXTStep;Apple Macintosh上A/UX、
?? ? ? Microsoft和SCO聯合為Intel x86-32架構開發的XENIX
?? ? ? 基于4.3BSB,將BSD移植到32位的X86 cpu上,命名為386/bsd;基于386/bsd衍生出NetBSD和FreeBSD
?? ? ? NetBSD側重于對于大量硬件平臺的可移植性;FreeBSD關注性能
?? ? ? OpenBSD從NetBSD分離出來,偏重于安全性
(8)UNIX標準:
? ? ? ? SUS:Single UNIX Specification
? ? ? ? POSIX標準:可移植操作系統Portable Operating System Interface,提升應用程序在源碼級別的可移植性
? ? ? ? POSIX.1標準:操作系統應向程序提供調用各項服務的API;
? ? ? ? ? ? ? ? ? ? ? ? ? ? 該標準基于UNIX系統調用和C語言庫函數,但無需與任何特殊實現相關。這意味著任何操作系統都可以實現該接口,而不一定要是UNIX操作系統。
? ? ? ? POSIX.2標準:對Shell和包括C編譯器命令行接口在內的各種UNIX工具進行了標準化。
? ? ? ? X/Open公司:多家國際計算機廠商所組成的聯盟,致力于采納和改進現有標準。
?? ? ? ? ? ? ? ? ? ? ? ? ? 1994年發布的指導叢書---XPG4版本2
?? ? ? ? ? ? ? ? ? ? ? ? ? 1993年Novell將UNIX的商標權轉讓給了X/Open,然后發布了“重新包裝”指導叢書--SUSv1或稱為UNIX95
?? ? ? ? ? ? ? ? ? ? ? ? ? 1997年發布SUSv2規范(有時稱為XPG5),經過該認證的UNIX稱為UNIX98
?? ? ? SUSv3標準 : 取代了SUSv2和 POSIX.2;經過該認證的UNIX稱為UNIX03
? ? ? ?
?? ? ? XSI規范:X/Open系統接口,要想完全符合XSI規范,除了滿足POSIX所有規定外,還要提供若干POSIX規范中的可選接口和行為,這樣才可獲得UNIX03稱號
?? ? ? XSI擴展:將XSI規范符合度達標所需的額外接口和行為統稱為XSI擴展。這些擴展支持以下特性:線程、mmap()、munmap()、dlopen API、資源限制、
?? ? ? ? ? ? ? ? ? ? 偽終端、System V IPC、syslog API、poll()以及登錄記賬。
?? ? ?
?? ? ? SUSv4標準:廢止了SUSv3中的某些函數,這包括asctime()、ctime()、ftw()、gettimeofday()、getitimer()、setitimer()、siginterrupt()
?? ? ? ? ? ? ? ? ? ? ? ? 刪除了SUSv3標記為作廢的函數:gethostbyname()、gethostbyaddr()、vfork()
(9)Linux歷史(內核0.0.2發布于1991年):
? ? ? ? GNU:GNU’s not UNIX
? ? ? ? FSF:自由軟件基金會
? ? ? ? GNU GPL:通用公共許可協議
? ? ? ? GNU項目成果:Emacs文本編輯器、GCC、bash shell、glibc;但沒有系統內核
? ? ? ? Linux:只是指由Linus Torvalds和其他人所開發出的內核;該內核外加一大堆其他軟件(工具和庫)構成完整操作系統
? ? ? ? LSB:Linux Standard Base? Linux標準規范
? ? ? ? ? ? ? ? 遵循各種UNIX標準,尤其時符合POSIX和SUS規范,是Linux(即內核、glibc以及工具)開發的總體目標。
?? ? ? ?
? ? ? ? LSB推廣的二進制可移植性(編譯過的程序),只要硬件平臺不一,便無法實現。 ? ? ? ? ?
? ? ? ? POSIX推廣的是源碼可移植性,指以C語言編寫的程序可以在任何符合POSIX規范的系統上編譯并運行。