高階io是相對於檔案io說的
檔案io,就是讀寫檔案,一切皆是檔案
高階io要解決讀寫以外的情況
阻塞式:函式呼叫會被卡住(雖然會釋放cpu的使用權,但是**不會往下走),核心會在此處掛起,
好多預設的程式都是阻塞式的,
常見的阻塞式的函式,sleep,wait,pause等,
阻塞式在多路io的時候會有問題,會影響實時性。
非阻塞:沒有條件先過去幹別的,沒有條件也過去
兩種方法開啟open時候用o_nonblock (適用於開啟的時候就知道要非阻塞操作)
fcntl(開啟的時候不知道用阻塞式操作)設定屬性
高階IO 非阻塞IO
通常我們在設定介面是阻塞還是非阻塞的時候,有兩種方案 1 將檔案描述符設定為非阻塞式檔案描述符 2 通過傳遞特殊選項,讓介面本身以非阻塞方式呼叫。乙個檔案描述符,預設都是阻塞io。fcntl的函式原型如下 fcntl可以改變已經開啟的檔案性質。針對cmd的值,fcntl能夠接受第三個引數arg 可變...
高階IO 非阻塞
一 設定檔案描述符標誌 設定檔案描述符標誌 void set fl int fd,int flags 二 清除檔案描述符標誌 清除檔案描述符標誌 void clr fl int fd,int flags 三 主函式 int main void clr fl stdout fileno,o nonbl...
阻塞I O,非阻塞I O
拿 socket舉例。當read資料時,如果這時沒有資料可讀,阻塞i o會一直等待有資料讀,資料從kernel copy 到socket的buffer後返回 非阻塞i o會立即返回,但如果有資料可讀,非阻塞i o也是等資料從kernel copy 到socket的buffer後返回。以上是阻塞與非阻...