Linux系統編程1標準IO - sysio系統調用IO 與 標準IO概述

  1. sysio系統調用IO(文件IO)
  2. stdio 標準IO

一 sysio系統調用IO(文件IO):

kernel爲用戶提供的一組函數,用於讓我們能對話kernel。所以我們可以通過系統調用IO 直接對話kernel。

思考:既然系統調用IO 是kernel 提供的,那麼不同的系統,他們的kernel 可能是不一樣的,比如Linux 系統和 Windows 系統,所以他們提供的系統調用IO也是不一樣的,這就給我們程序員造成了困擾,因爲如果一個需求跨平臺實現,因爲每個系統提供的系統調用IO 不同,導致不同的平臺分別實現一遍我們的程序是很頭疼的,所以針對不同平臺的差異,就推出了標準IO。

二 stdio 標準IO

標準IO 是依賴於系統調用IO 來實現的
如 printf(),他就是我們標準IO 中的一個,我們在使用 printf()的時候,不會去考慮具體的環境與平臺,這是因爲標準IO 是調用了 各個平臺的系統調用IO 從而實現了與kernel 的交互。標準IO 推出來後,各個系統都要支持標準IO ,如標準IO 要調用 打印 打開 關閉 等操作,那麼不論當前平臺系統怎麼做,不論他用什麼系統調用IO 去支撐標準IO的對應功能,一定要實現對應功能。所以我們不論在什麼系統,都可以使用標準IO 。

所以stdio 是 依賴於 sysio 來實現的,但是不同系統對標準IO 的支持是不一樣的,比如:
標準io :fopen() ,在 LINUX 系統中 依賴的系統調用IO 是 open(),而在Windows下依賴的系統調用IO是openfile()。所以 open() 與 openfile()就是系統 kernel 提供出來的系統調用IO ,fopen()就是標準IO ,我不論在Linux 系統還是在 Windows系統中調用 fopen() 都能夠打開一個文件。

在這裏插入圖片描述

標準IO 與 系統調用IO 的選擇

如果某個操作,標準IO 和 系統調用IO 都可以實現,那麼我們優先選擇哪一種IO 呢? 我們優先選擇標準IO 。
原因1:標準IO 有很好的移植性

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章