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

相关推荐
松涛和鸣30 分钟前
Linux Makefile : From Basic Syntax to Multi-File Project Compilation
linux·运维·服务器·前端·windows·哈希算法
Predestination王瀞潞1 小时前
JDK安装及环境变量配置
java·linux·开发语言
再睡一夏就好1 小时前
深入Linux线程:从轻量级进程到双TCB架构
linux·运维·服务器·c++·学习·架构·线程
小小药2 小时前
09-vmware配置虚机连接互联网-nat模式
linux·运维·centos
广东大榕树信息科技有限公司2 小时前
如何通过国产信创动环监控系统优化工厂环境管理?
运维·网络·物联网·国产动环监控系统·动环监控系统
云和数据.ChenGuang2 小时前
OpenEuler系统下RabbitMQ安装与基础配置教程
服务器·分布式·rabbitmq·ruby·数据库运维工程师·运维教程
工控小楠2 小时前
EtherNET IP转Profinet协议网关在智能仓储系统中的应用
服务器·网络·tcp/ip
Bright Xu2 小时前
Qemu 安装 LoongArch架构 Fedora Remix F42 Linux系统
linux·loongarch·国产cpu
莫白媛2 小时前
Linux创作笔记综合汇总篇
linux·运维·笔记
heartbeat..2 小时前
JUC 在实际业务场景的落地实践
java·开发语言·网络·集合·并发