Linux_dup、dup2函数

1.dup1

#include <unistd.h>

       int dup(int oldfd);

       作用:复制一个新的文件描述符

       从空闲的文件描述符表中,找一个最小的,作为新的拷贝的文件描述符

       指向的文件和旧的文件描述符是一样的

       int dup2(int oldfd, int newfd);

#include <unistd.h>
#include<stdio.h>
#include<fcntl.h>
#include<sys/stat.h>
#include<sys/types.h>
#include<string.h>
int main() {int fd = open("a.txt", O_RDWR | O_CREAT, 0664);int fd1 = dup(fd);if(fd1 == -1) {perror("dup");return -1;}printf("fd: %d, fd : %d\n", fd, fd1);close(fd);char* str = "Hello world";int ret = write(fd1, str, strlen(str));if(ret == -1) {perror("write");return -1;}close(fd1);return 0;
}

2.dup2

#include <unistd.h>

    int dup2(int oldfd, int newfd);

    作用:重定向文件描述符

    oldfd必须是一个有效的文件描述符

    oldfd和newfd值相同,相当于什么都没有做

#include <unistd.h>
#include<stdio.h>
#include<string.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
int main() {int fd = open("1.txt", O_RDWR | O_CREAT, 0664);if(fd == -1) {perror("open");return -1;}int fd1 = open("2.txt", O_RDWR | O_CREAT, 0664);if(fd1 == -1) {perror("open");return -1;}printf("fd: %d, fd1: %d\n", fd, fd1);int fd2 = dup2(fd, fd1);if(fd2 == -1) {perror("dup2");return -1;}//通过fd1去写数据,实际操作的是1.txt,而不是2.txtchar* str = "hello dup2";int len = write(fd1, str, strlen(str));if(len == -1) {perror("write");return -1;}printf("fd: %d, fd1: %d, fd2: %d\n", fd, fd1, fd2);close(fd);close(fd1);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/115104.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ai智能生成文章-智能生成文章软件

您是否曾为创作内容而感到头疼不已&#xff1f;是否一直在寻找一种能够帮助您轻松生成高质量文章的解决方案&#xff1f;什么是AI智能生成文章&#xff0c;特别是147SEO智能原创文章生成。这是一种先进的技术&#xff0c;利用人工智能和自然语言处理&#xff0c;能够自动生成各…

vue点击pdf文件直接在浏览器中预览文件

好久没有更新文章了&#xff0c;说说为什么会有这篇文章呢&#xff0c;其实是应某个热线评论的要求出的&#xff0c;不过由于最近很长一段时间没打开csdn现在才看到&#xff0c;所以才会导致到现在才出。 先来看看封装完这个预览方法的使用&#xff0c;主打一个方便使用&#x…

因为内存溢出,我差点被优化

我们都知道&#xff0c;在写代码的过程中&#xff0c;业务逻辑很大程度上决定了你对业务的理解&#xff0c;但是解决问题&#xff0c;却是你提升比较关键的地方&#xff0c;而我&#xff0c;却差点因为这个内存溢出&#xff0c;把自己给干优化掉。 什么是内存溢出 百度百科是…

《金字塔原理》阅读笔记

我们都希望在思考、沟通交流和解决问题时&#xff0c;重点突出&#xff0c;思路清晰&#xff0c;层次分明。我们评价人时&#xff0c;有一个标准是逻辑思维能力&#xff0c;而逻辑思维能力的标准又是什么&#xff1f;我们指导别人“要逻辑清晰、条理分明”&#xff0c;可怎样才…

Postman应用——接口请求和响应(Get和Post请求)

文章目录 新增Request请求Get请求Post请求 Request请求响应Postman响应界面说明请求响应另存为示例&#xff08;模板&#xff09;Postman显示的响应数据清空请求响应数据保存到本地文件 这里只讲用的比较多的Get和Post请求方式&#xff0c;也可以遵循restful api接口规范&#…

服务器时间正常,docker容器日志显示时间少了8小时

问题&#xff1a; 项目中docker部署的项目容器日志时间少了8小时。解决&#xff1a; 在Dockerfile添加下面语句&#xff1a; # 设置时区 ENV TZ"Asia/Shanghai"

4年测试工作经验,跳槽之后面试20余家公司的总结

先说一下自己的个人情况&#xff0c;普通二本计算机专业毕业&#xff0c;懂python&#xff0c;会写脚本&#xff0c;会selenium&#xff0c;会性能&#xff0c;然而离职后到今天都没有收到一份offer&#xff01;一直在待业中&#xff0c;从离职第一天就开始准备简历&#xff0c…

Linux查看哪些进程占用的系统 buffer/cache 较高 (hcache,lsof)命令

1、什么是buffer/cache &#xff1f; buffer/cache 其实是作为服务器系统的文件数据缓存使用的&#xff0c;尤其是针对进程对文件存在 read/write 操作的时候&#xff0c;所以当你的服务进程在对文件进行读写的时候&#xff0c;Linux内核为了提高服务的读写速度&#xff0c;则将…

记录一次DLL分析实战

记录一次DLL分析实战 1.VT查看分析报告2.判断文件是否加壳3.查看导入函数4.查看是否有任何其他文件或基于主机的迹象5.使用工具IDA Pro进行字符串分析 1.VT查看分析报告 virustotal 全绿&#xff0c;没有报毒&#xff1a; 可以看到这个dll是32位的&#xff1a; 下面可以看它调…

MyEclipse 用tomcat部署SSM项目后,项目名称和当前项目不一致

MyEclipse 用tomcat部署SSM项目后&#xff0c;项目成功启动&#xff0c;但是访问所有接口报404 从这里可以看到&#xff0c;部署的项目名为accurate_sugar_control_yc_api&#xff0c;但实际我们项目名字应该为accurate_sugar_control_otc_api 解决办法 在本地找到项目的根目…

TQ210-Bootloader-Uboot(LTS)

Bootloader的作用 Bootloader是位于计算机系统启动过程中的程序&#xff0c;它的主要作用是将操作系统从磁盘等外部存储介质加载到计算机内存中&#xff0c;并启动操作系统执行。Bootloader通常包括硬件初始化、自检、异常处理和启动操作系统等功能。它是计算机系统中非常重要…

shiro

shrio笔记 认证 授权 JWT简介&#xff08;Json Web Token) 1、导入依赖库 <!--shiro--><dependency><groupId>org.apache.shiro</groupId><artifactId>shiro-web</artifactId><version>1.5.3</version></dependency>…