高级I/O-----dup/dup2
发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,dup/dup2dup/dup2是两个用于指定文件操作符的方法,作用很相似,它是得两个文件描述符指向同一个file结构体,使file的引用计数为2,所以在使用的时候我们需要手动关闭另外一个不需要的。d
千家信息网最后更新 2025年02月23日高级I/O-----dup/dup2
dup/dup2
dup/dup2是两个用于指定文件操作符的方法,作用很相似,它是得两个文件描述符指向同一个file结构体,使file的引用计数为2,所以在使用的时候我们需要手动关闭另外一个不需要的。
dup:
dup的作用是将文件描述符指向一个最小的文件描述符。
#includeint dup(int oldfd); int dup2(int oldfd, int newfd);
因为比较简单,就从代码来看吧
1 #include2 #include 3 #include 4 #include 5 #include 6 #include 7 #define _PATH_ "./test.log" 8 9 10 int main() 11 { 12 umask(0); 13 int fd=open(_PATH_,O_CREAT|O_WRONLY,0644);//打开一个新的文件 14 if(fd<0) 15 { 16 perror("open"); 17 } 18 close(1);//关掉需要用dup指向的文件描述符,注意(dup会使fd指向一个未使用的最 //小的文件描述符) 19 int new_fd=dup(fd);//现在1号文件描述符指向刚才open的文件 20 close(fd); //关闭之前open的文件描述符,如果不关闭,则从fd中也能网文件 //里写。 21 char buf[1024]; 22 while(1) 23 { 24 memset(buf,'\0',sizeof(buf)); 25 ssize_t size=read(0,buf,sizeof(buf)-1); 26 if(size>0) 27 { 28 buf[size]='\0'; 29 } 30 if(strncmp(buf,"quit",4)==0) 31 { 32 break; 31 { 32 break; 33 } 34 printf("%s",buf);//printf会输出到1号文件描述符中 35 fflush(stdout); 36 } 37 close(1); 38 return 0; 39 }
效果图
dup2:
1 #include2 #include 3 #include 4 #include 5 #include 6 #include 7 #define _PATH_ "./test.log" 8 9 int main() 10 { 11 umask(0); 12 int fd =open(_PATH_,O_CREAT|O_WRONLY,0644); 13 if(fd<0) 14 { 15 perror("open"); 16 } 17 close(1); //使用dup2所使用的重定向到的文件描述符必须先关闭 18 int newfd=dup2(fd,1); 19 close(fd);//关闭fd现在只有1号文件描述符指向所open的文件 20 char buf[1024]; 21 printf("%d\n",newfd); 22 while(1) 23 { 24 memset(buf,'\0',sizeof(buf)); 25 fgets(buf,sizeof(buf)-1,stdin); 26 if(strncmp(buf,"quit",4)==0) 27 { 28 break; 29 } 30 printf("%s",buf); 31 fflush(stdout); 32 } 33 return 0; 34 }
结果和dup一样
总结:
当需要往标准输出上打的调试信息,可以使用重定向的方式让它输出到相应的文件中。
文件
指向
输出
两个
作用
最小
相似
代码
信息
只有
手动
操作符
效果
效果图
方式
方法
时候
标准
看吧
结构
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
开票税控数据库文件夹
如何维护网络安全和预防网络风险
万得数据库数据限制
3.2数据库的构建
宜章软件开发工程师在哪学
ftp服务器配置与分析
蓝海软件开发拍牌
网络安全宣传座谈会
换换衣服网络安全的画
大雅数据库查重准不准
关系数据库逻辑模型是什么集合
医院网络安全架构设计
软件开发项目成果总结
软件开发工程师证有什么用处
数据库pga查询
邯郸企业管理软件开发价格
网络工程设计和软件开发哪个好
服务器数据库被黑客删除了怎么办
ios软件开发图片
网络安全检测necuss
英雄联盟开放世界服务器
高级软件开发工程师证书费用
服务器租赁挣钱么
分布式协同服务器搭建
新乡市磐石网络技术怎么样
网络安全年终盘点
怎么创建自己的数据库
存储服务器安装后会格式化硬盘吗
合肥企业软件开发平台
软件开发零基础视频