一、設定檔案描述符標誌
//設定檔案描述符標誌
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後返回。以上是阻塞與非阻...