高階IO 非阻塞

2021-08-28 13:20:30 字數 790 閱讀 5142

一、設定檔案描述符標誌

//設定檔案描述符標誌

void set_fl(int fd, int flags)

二、清除檔案描述符標誌

//清除檔案描述符標誌

void clr_fl(int fd, int flags)

三、主函式

int main(void)

}clr_fl(stdout_fileno, o_nonblock);

exit(0);

}

四、程式

#include #include #include #include #include void set_fl(int fd, int flags);

void clr_fl(int fd, int flags);

char buf[500000];

int main(void)

}clr_fl(stdout_fileno, o_nonblock);

exit(0);}

//設定檔案描述符標誌

void set_fl(int fd, int flags)

//清除檔案描述符標誌

void clr_fl(int fd, int flags)

五、編譯

編譯

gcc -o read read.c

執行./read

高階IO 非阻塞IO

通常我們在設定介面是阻塞還是非阻塞的時候,有兩種方案 1 將檔案描述符設定為非阻塞式檔案描述符 2 通過傳遞特殊選項,讓介面本身以非阻塞方式呼叫。乙個檔案描述符,預設都是阻塞io。fcntl的函式原型如下 fcntl可以改變已經開啟的檔案性質。針對cmd的值,fcntl能夠接受第三個引數arg 可變...

78 高階IO之非阻塞IO

高階io是相對於檔案io說的 檔案io,就是讀寫檔案,一切皆是檔案 高階io要解決讀寫以外的情況 阻塞式 函式呼叫會被卡住 雖然會釋放cpu的使用權,但是 不會往下走 核心會在此處掛起,好多預設的程式都是阻塞式的,常見的阻塞式的函式,sleep,wait,pause等,阻塞式在多路io的時候會有問題...

阻塞I O,非阻塞I O

拿 socket舉例。當read資料時,如果這時沒有資料可讀,阻塞i o會一直等待有資料讀,資料從kernel copy 到socket的buffer後返回 非阻塞i o會立即返回,但如果有資料可讀,非阻塞i o也是等資料從kernel copy 到socket的buffer後返回。以上是阻塞與非阻...