【Linux网络】五种IO模型与非阻塞IO

五种IO模型与非阻塞IO


文章目录


五种IO模型










高级IO重要概念



实现函数SetNoBlock


轮询方式获取标准输入

代码如下(示例):

c 复制代码
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
void SetNoBlock(int fd) {
	int fl = fcntl(fd, F_GETFL);
	if (fl < 0) {
		perror("fcntl");
		return;
	}
	fcntl(fd, F_SETFL, fl | O_NONBLOCK);
}
int main() {
	SetNoBlock(0);
	while (1) {
		char buf[1024] = { 0 };
		ssize_t read_size = read(0, buf, sizeof(buf) - 1);
		if (read_size < 0) {
			perror("read");
			sleep(1);
			continue;
		}
		printf("input:%s\n", buf);
	}
	return 0;
}

相关推荐
新时代牛马5 小时前
Linux 性能调优与追踪完整篇:ftrace、perf、eBPF从采样到落地验证
linux·运维·服务器
sunoo-2295 小时前
【网络编程 + 数据库】select 与 epoll 核心区别详解 + SQLite 入门到 C 接口全攻略
linux·网络·数据库·vscode·学习·sqlite
长脖鹿Johnny5 小时前
游戏输入系统框架设计(三):网络输入权威与可验证性
网络·游戏·游戏开发·架构设计·输入系统·网络同步
zbyyd5 小时前
Linux 系统编程 :select/epoll 多路复用与 SQLite 数据库实战
linux·数据库·sqlite
Mortalbreeze6 小时前
深入理解 Linux IO 模型(二):多路复用——select
linux·运维·服务器·网络·tcp/ip
Mrs_DongDong6 小时前
华为云 Windows 服务器远程桌面自定义端口排障指南
服务器·windows·华为云
koi77u6 小时前
嵌入式学习———sqlite数据表
linux·数据库·学习·sqlite
SamChan906 小时前
PDF翻译服务端到端基准测试:4款主流方案的吞吐量、延迟、内存占用对比
服务器·网络·python·ai·pdf·wpf
Sagittarius_A*6 小时前
CVE-2026-42271:从 MCP stdio 测试接口看 LiteLLM 的命令执行风险与防御闭环
网络·windows·安全·cve·rce
笑梦无境6 小时前
nginx安装(5)
linux·运维·nginx