dup和dup2函数

news2024/10/23 2:52:30
#include <unistd.h>
int dup(int oldfd);
功能:根据oldfd生成newfd,newfd采用最小位使用原则分配,
    新旧文件描述符都可以操作文件,它们共享光标和打开文件的方式。
参数:
    @olfd:旧的文件描述符
返回值:成功返回新的文件描述符,失败返回-1置位错误码

int dup2(int oldfd, int newfd);
功能:文件描述符重定向,newfd是用户指定的,如果newfd之前被使用在重用前会关闭它
参数:
    @olfd:旧的文件描述符
 @newfd:新的文件描述符
返回值:成功返回新的文件描述符,失败返回-1置位错误码

dup函数

#include <head.h>

int main(int argc, const char* argv[])
{
    int fd;

    if ((fd = open("./hello.txt", O_RDWR | O_CREAT | O_APPEND, 0666)) == -1)
        PRINT_ERR("open error");

    close(0); // 关闭标准输入
    close(1); // 关闭标准输出
    close(2); // 关闭标准出错

    dup(fd);  //分配的新的fd是0,对应的文件
    dup(fd);  //分配的新的fd是1,对应的文件
    dup(fd);  //分配的新的fd是2,对应的文件

    printf("i am test dup func...\n");
    fflush(stdout);
    lseek(fd,0,SEEK_SET);
    char ch;
    scanf("%c",&ch);
    printf("ch = %c\n",ch);
    fflush(stdout);
    fprintf(stderr,"i am test stderr\n");

    close(fd);
    return 0;
}

dup2函数

#include <head.h>

int main(int argc, const char* argv[])
{
    int fd;

    if ((fd = open("./hello.txt", O_RDWR | O_CREAT | O_APPEND, 0666)) == -1)
        PRINT_ERR("open error");

    dup2(fd,0); //将0文件描述符对应到fd的文件中   PS同一个文件可以有多个文件描述符 指向同一个文件
    dup2(fd,1); //将1文件描述符对应到fd的文件中
    dup2(fd,2); //将2文件描述符对应到fd的文件中

    printf("i am test dup func...\n");
    fflush(stdout);
    lseek(fd,0,SEEK_SET);
    char ch;
    scanf("%c",&ch);
    printf("ch = %c\n",ch);
    fflush(stdout);
    fprintf(stderr,"i am test stderr\n");

    close(fd);
    return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

视频监控平台功能:国外的硬盘录像机NVR通过ISUP协议(原ehome协议)接入AS-V1000视频平台

目录 一、背景说明 二、ISUP协议介绍 1、海康ISUP协议概述 2、ISUP协议支持主码流和子码流切换 &#xff08;1&#xff09;灵活配置和个性化 &#xff08;2&#xff09;适应不同网络带宽&#xff0c;提高使用体验 3、海康ehome相关文章 三、ISUP协议接入说明 1、平台侧…

【ARMv8/v9 GIC 系列 4.1 -- GIC CPU Interface 访问支持情况】

文章目录 GIC CPU Interface 访问支持Bit[27:24]: GIC CPU接口汇编代码实现访问小结 GIC CPU Interface 访问支持 在ARMv8架构中&#xff0c;ID_AA64PFR0_EL1是一个系统寄存器&#xff0c;提供了有关处理器功能的详绀信息。这个寄存器的位[27:24]专门用于描述GIC&#xff08;通…

VScode中js关闭烦人的ts检查

类似如下的代码在vscode 会报错&#xff0c;我们可以在前面添加忽略检查或者错误&#xff0c;如下&#xff1a; 但是&#xff01;&#xff01;&#xff01;这太不优雅了&#xff01;&#xff01;&#xff01;&#xff0c;js代码命名没有问题&#xff0c;错在ts上面&#xff0c;…

码蹄集 BD202401 补给

错误解法&#xff1a;简单将取半前后的综合排序后取最小值&#xff0c;这样没有考虑这样一种情况&#xff1a;取半的时机不对&#xff0c;也许取半某个大一点的P之后反而能进一步取一个补给点了呢&#xff1f;&#xff1f;对不对。这样简单排序只不过是“最省钱”的一种&#x…

Linux源码阅读笔记02-进程原理及系统调用

进程和进程的生命周期 进程&#xff1a;指计算机中已运行的程序。进程本身不是基本的运行单位&#xff0c;而是线程的容器。程序本身不是基本的运行单位&#xff0c;而是线程的容器。程序是指令、数据和组织形式的描述&#xff0c;进程才是程序的真正运行实例。Linux内核把进程…

AndroidStudio中如何运行class中的main()函数?

直接右键运行Run main()是会报错的, * What went wrong: A problem occurred configuring project :app. > Could not create task :app:RsaUtils.main(). > SourceSet with name main not found. 需要Run main with Coverage 有些文章说需要在gradle.xml里面加上&…

HNU操作系统2023期中考试试卷及参考答案

本试题参考 甘晴void 的CSDN博客【2.2】操作系统OS_甘晴void的博客-CSDN博客&#xff0c;本意为期中复习自用&#xff0c;答案在其基础上进行进一步完善&#xff0c;若有错误还请指正&#xff01; 第一题&#xff1a;基础题&#xff08;20分&#xff09; 1.1&#xff08;4分&a…

智慧物流:实现供应链的技术升级

智慧物流不仅是物流管理系统的智能化升级&#xff0c;更是以物联网、大数据分析等技术手段为基础的一种高效、智能的供应链解决方案。通过实时监控、数据分析和智能优化&#xff0c;智慧物流将传统物流的各个环节有效连接起来&#xff0c;实现信息流、资金流和物流的无缝对接。…

全网最全postman接口测试教程和项目实战~从入门到精通

Postman实现接口测试内容大纲一览&#xff1a; 一、什么是接口&#xff1f;为什么需要接口&#xff1f; 接口指的是实体或者软件提供给外界的一种服务。 因为接口能使我们的实体或者软件的内部数据能够被外部进行修改。从而使得内部和外部实现数据交互。所以需要接口。 比如&…

GPT-4o与GPT-4的价格对比

截图来源于微软Azure的OpenAI服务。 GPT-4o比GPT-4的价格降低是肉眼可见&#xff0c;可惜计价是美元单位&#xff0c;较国内的价格而言还是比较贵&#xff0c;拿来做Demo演示可以&#xff0c;商用的话&#xff0c;还要仔细考量考量。 国内的地板价已经来到了0.5元/百万Token的…

python使用pyautogui自动化模拟鼠标、键盘操作、截屏、识别图片位置

&#x1f308;所属专栏&#xff1a;【python】✨作者主页&#xff1a; Mr.Zwq✔️个人简介&#xff1a;一个正在努力学技术的Python领域创作者&#xff0c;擅长爬虫&#xff0c;逆向&#xff0c;全栈方向&#xff0c;专注基础和实战分享&#xff0c;欢迎咨询&#xff01; 您的…

进入全球市场的游戏本地化策略

开发商在开发游戏时已经很久没有针对单一国家了。对于目前正在开发的许多游戏来说&#xff0c;它们都致力于进入全球市场并吸引各种客户。然而&#xff0c;必须考虑一些游戏是否适合某些市场&#xff0c;以及某些国家是否具有足够的市场潜力。此外&#xff0c;在进入海外市场时…

实现一个简易动态线程池

项目完整代码&#xff1a;https://github.com/YYYUUU42/Yu-dynamic-thread-pool 如果该项目对你有帮助&#xff0c;可以在 github 上点个 ⭐ 喔 &#x1f970;&#x1f970; 1. 线程池概念 2. ThreadPoolExecutor 介绍 2.1. ThreadPoolExecutor是如何运行&#xff0c;如何同时…

自定义平台后台登录地址前缀的教程

修改平台后台地址默认的 admin 前缀 修改后端 config/admin.php 配置文件,为自定义的后缀 修改 平台后台前端源码中 src/settings.js 文件,修改为和上面一样的配置 修改后重新打包前端代码,并且覆盖到后端的 public 目录下 重启 swoole 服务即可

通过git命令查询某个用户提交信息

要查询某个用户通过 Git 提交了多少行代码&#xff0c;可以使用以下步骤和命令来实现。这些命令将统计该用户的添加和删除的代码行数。 1、切换到你的 Git 仓库&#xff1a; cd /path/to/your/repositorygit命令结果&#xff1a; 2、查询所有用户&#xff1a; git log --pr…

springboot3多模块实践

先帖下目录结构&#xff0c;直接在idea里面新建就行&#xff0c;删掉多余的文件 子模块的新建 根目录pom文件&#xff0c;注意modules、packaging&#xff0c;dependencyManagement统一管理依赖&#xff0c;子模块添加依赖的时候就不用加版本号 <?xml version"1.0…

【TIM输出比较】

TIM输出比较 1.简介1.1.输出比较功能1.2.PWM 2.输出比较通道2.1.结构原理图2.2.模式分类 3.输出PWM波形及参数计算4.案例所需外设4.1.案例4.2.舵机4.3.直流单机 链接: 15-TIM输出比较 1.简介 1.1.输出比较功能 输出比较&#xff0c;英文全称Output Compare&#xff0c;简称O…

微观时空结构和虚数单位的关系

回顾虚数单位的定义&#xff0c; 其中我们把称为周期&#xff08;的绝大部分&#xff09;&#xff0c;称为微分&#xff0c;0称为原点或者起点&#xff08;意味着新周期的开始&#xff09;&#xff0c;由此我们用序数的概念反过来构建了基数的概念。 周期和单位显然具有倍数关…

ACS自助借还服务端模拟工具(3M SIP2协议)

点击下载《ACS自助借还服务端模拟工具&#xff08;源代码&#xff09;》 1. 前言 在当今科技迅猛发展的时代&#xff0c;自助服务系统已成为提升用户体验和运营效率的关键。为了满足自助借还软件辅助开发的需求&#xff0c;我们精心打造了一款功能强大的ACS服务端模拟软件。这…

AI音乐大模型:是创意的助力还是产业的挑战?

近期音乐界迎来了一场前所未有的革命。随着多家科技公司纷纷推出音乐大模型&#xff0c;素人生产音乐的门槛被前所未有地拉低&#xff0c;一个崭新的“全民音乐时代”似乎已近在眼前。然而&#xff0c;在这场技术革新的浪潮中&#xff0c;关于AI产品版权归属、创意产业如何在AI…