【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;
}

相关推荐
AI+程序员在路上4 小时前
CAN 总线与 Linux SocketCAN C 语言测试程序
linux·c语言·网络
Predestination王瀞潞4 小时前
4.3.3 存储->微软文件系统标准(微软,自有技术标准):VFAT(Virtual File Allocation Table)虚拟文件分配表系统
linux·microsoft·vfat
HalvmånEver4 小时前
Linux:socket套接字编程的基础概念
linux·运维·服务器
二进制person5 小时前
JavaEE初阶 --网络初识
运维·服务器·网络
李&@杰5 小时前
《中小型企业网络完整项目方案(拓扑+配置+说明+验收清单)》
网络
IMPYLH5 小时前
Linux 的 cp 命令
linux·运维·服务器
@syh.5 小时前
【linux】多线程
linux
RisunJan5 小时前
Linux命令-man(查看Linux中的指令帮助)
linux·运维·服务器
REDcker5 小时前
CentOS 与主流 Linux 发行版:版本与时间表(年表)
linux·运维·centos
bai_lan_ya5 小时前
使用linux的io文件操作综合实验_处理表格
linux·服务器·算法