用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函式用法詳解函式
- fcntl函式實現dup函式
- 阻塞程式函式 wait()和waitpid()函式AI
- 阻塞式程式設計和非阻塞式程式設計區別程式設計
- fpm 如何快速定位到阻塞函式函式
- 凸集、凸函式定義及主要性質函式
- 由函式的解析式給出函式的性質 | 你想到了嗎函式
- 15.3 極限函式與和函式性質函式
- Win10 Insider本週可能不推送新版更新:因一個阻塞性bugWin10IDE
- 基於promise的阻塞式佇列設計Promise佇列
- 高質量的程式碼 - 函式(1)函式
- 02_函式定義及使用函式函式
- 如何在函式內部定義函式?函式
- 使用 setResponseStatus 函式設定響應狀態碼函式
- 我發現了華點:vue規定用普通函式定義方法,為什麼react又要我用箭頭函式!Vue函式React
- 兄弟連go教程(11)函式 - 函式定義Go函式
- 什麼是Python函式?如何定義函式?Python函式
- Vue函式式元件的應用Vue函式元件
- FastAPI之阻塞式io和非阻塞式ioASTAPI
- Python 引用不確定的函式Python函式
- 啟用函式的作用函式
- 阻塞式IO
- php禁用函式設定及檢視方法詳解PHP函式
- 啟用函式(activation functions)二三事-性質、作用與選擇函式Function
- 微軟確認本週不推送Win11Dev 預覽版:遭遇了阻塞性Bug微軟dev
- 如何編寫高質量的 JS 函式(3) --函數語言程式設計[理論篇]JS函式函數程式設計
- 函式引數 引數定義函式型別函式型別
- 第 8 節:函式-函式定義和引數函式
- python之為函式執行設定超時時間(允許函式執行的最大時間)Python函式
- python---函式定義Python函式
- python如何定義函式Python函式
- 人人都能學會的python程式設計教程11:定義函式Python程式設計函式
- Echarts的tooltip中動態單位設定(使用formatter函式加工)EchartsORM函式
- 尤拉函式性質和模版函式
- Java 網路程式設計 —— 非阻塞式程式設計Java程式設計
- 方法(函式)的定義與引數函式
- Shell中函式的定義和使用函式
- 函式設計函式
- 如何編寫高質量的函式 -- 敲山震虎篇函式