用fcntl()設定阻塞函式的阻塞性質
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#define ERR_EXIT(m) \
do { \
perror(m);\
exit(EXIT_FAILURE);\
}while(0)
void activate_nonblock(int fd);
void deactivate_nonblock(int fd);
int main(int argc, const char *argv[])
{
activate_nonblock(STDIN_FILENO);
char buffer[1024] = {0};
int ret = read(STDIN_FILENO, buffer, 1024);
if(ret == -1)
printf("read");
return 0;
}
void activate_nonblock(int fd)
{
int ret;
int flags = fcntl(fd, F_GETFL);
if(flags == -1)
ERR_EXIT("fcntl");
flags |= O_NONBLOCK;
ret = fcntl(fd, F_SETFL, flags);
if(ret == -1)
ERR_EXIT("fcntl");
}
void deactivate_nonblock(int fd)
{
int ret;
int flags = fcntl(fd, F_GETFL);
if(flags == -1)
ERR_EXIT("fcntl");
flags &=~O_NONBLOCK;
ret = fcntl(fd, F_SETFL, flags);
if(ret == -1)
ERR_EXIT("fcntl");
}
相關文章
- fcntl函式實現dup函式
- fcntl函式用法詳解函式
- 檔案鎖fcntl()函式的使用函式
- 第七篇:使用 fcntl 函式 獲取,設定檔案的狀態標誌函式
- Linux系統程式設計(3)——檔案與IO之fcntl函式Linux程式設計函式
- 函式定義、函式的引數、函式的預設引數函式
- 阻塞式程式設計和非阻塞式程式設計區別程式設計
- fpm 如何快速定位到阻塞函式函式
- javascript為函式設定預設引數JavaScript函式
- C語言setgroups()函式:設定組程式碼函式C語言函式
- 阻塞程式函式 wait()和waitpid()函式AI
- 密碼複雜度設定函式密碼複雜度函式
- socket connect 函式設定超時函式
- 阻塞/非阻塞讀寫總結、tcp網路程式設計的本質、muduo::Buffer設計簡介TCP程式設計
- Java NIO 阻塞式與非阻塞式Java
- javascript給函式引數設定預設值JavaScript函式
- IO模式設定網路程式設計常見問題總結—IO模式設定,阻塞與非阻塞模式程式設計
- 基於promise的阻塞式佇列設計Promise佇列
- C++ 之Socket 程式設計 send rev 阻塞設定 阻塞超時時間C++程式設計
- 高質量的程式碼 - 函式(1)函式
- 《高質量C++/C程式設計指南》第9章:類的建構函式、解構函式與賦值函式C++C程式程式設計函式賦值
- gethostbyname函式和getservbyname函式的應用函式
- 尤拉函式性質和模版函式
- 高質量C++/C程式設計指南(第9章 類的建構函式、解構函式與賦值函式) (轉)C++C程式程式設計函式賦值
- 02_函式定義及使用函式函式
- 如何在函式內部定義函式?函式
- 微軟確認本週不推送Win11Dev 預覽版:遭遇了阻塞性Bug微軟dev
- Win10 Insider本週可能不推送新版更新:因一個阻塞性bugWin10IDE
- shell 函式定義函式
- js給函式設定預設值程式碼例項JS函式
- 我發現了華點:vue規定用普通函式定義方法,為什麼react又要我用箭頭函式!Vue函式React
- 啟用函式(activation functions)二三事-性質、作用與選擇函式Function
- 損失函式+啟用函式函式
- 兄弟連go教程(11)函式 - 函式定義Go函式
- Vue函式式元件的應用Vue函式元件
- Apache HttpClient 沒有設定time out導致應用長時間阻塞的問題ApacheHTTPclient
- 啟用函式的作用函式
- 如何編寫高質量的 JS 函式(3) --函數語言程式設計[理論篇]JS函式函數程式設計