Linux 管道、mmap文件映射

本文深入探讨了Linux系统中的管道在I/O多路复用模型中的应用,详细解释了select函数如何从文件描述符中选择可用的进行读写。同时,文章介绍了mmap技术如何实现大文件的高效复制,指出其利用磁盘驱动器硬件直接将文件映射到内存,避免了内核与用户空间的数据交换,速度优于传统的cp命令。最后,提到了大文件生成的两种方式。
摘要由CSDN通过智能技术生成

1.管道实现I/O多路转接模型
仔细理解select函数 从文件描述符集合选择可用的
例如: stdio 0 以及read 管道fifo中的数据这两个文件描述符中选取可以使用的,并加以判断FD_ISSET哪个fd描述符可用就使用哪一个。

实现双人聊天
mkfifo 1.fifo   2.fifo创建两个通信管道

read.c :
#include "func.h"
// read 1.pipe读 2.pipe写
int main(int argc,char** argv)
{
        int fdr,fdw;
        fdr=open(argv[1],O_RDONLY);
        fdw=open(argv[2],O_WRONLY);
        printf("fdr=%d,fdw=%d\n",fdr,fdw);
        char buf[20]={
  0};
        int ret;
        fd_set rdset;  //操作描述符集合
        struct timeval t;
        t.tv_usec=0;
        while(1){
                FD_ZERO(&rdset);
                FD_SET(0,&rdset);   //增加fd stdin
                FD_SET(fdr,&rdset);
                t.tv_sec=3;
                ret=select(fdr+1,&rdset,NULL,NULL,&t);
                if(ret>0){
                        if(FD_ISSET(0,&rdset)){
                                memset(buf,0,sizeof(buf));
                                ret=read(0,buf,sizeof(buf));   //stdin保存到buf
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值