news 2026/3/19 21:31:27

I/O重定向函数dup2

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
I/O重定向函数dup2

从标准输入拷贝一个文本文件到标准输出,使用dup2函数重定向到把一个磁盘文本文件拷贝到另一个磁盘文件的结尾处。

#include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> #include <stdio.h> #include <errno.h> #include <stdlib.h> #define MAXBUF 20 #define DEF_MODE S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH #define DEF_UMASK S_IWGRP|S_IWOTH ssize_t rio_readn(int fd, void *usrbuf, size_t n); ssize_t rio_writen(int fd, void *usrbuf, size_t n); int main(int argc, char **argv) { int n,fd1,fd2; char buf[MAXBUF]; fd1=open("hello.txt",O_RDONLY,0); umask(DEF_UMASK); fd2 = open("bar.txt", O_WRONLY|O_APPEND|O_CREAT, DEF_MODE); dup2(fd1,0); dup2(fd2,1); while((n=rio_readn(STDIN_FILENO,buf,MAXBUF))!= 0) rio_writen(STDOUT_FILENO,buf,n); exit(0); } ssize_t rio_readn(int fd, void *usrbuf, size_t n) { size_t nleft = n; ssize_t nread; char *bufp = usrbuf; while (nleft > 0) { if ((nread = read(fd, bufp, nleft)) < 0) { if (errno == EINTR) /* Interrupted by sig handler return */ nread = 0; /* and call read() again */ else return -1; /* errno set by read() */ } else if (nread == 0) break; /* EOF */ nleft -= nread; bufp += nread; } return (n - nleft); /* Return >= 0 */ } ssize_t rio_writen(int fd, void *usrbuf, size_t n) { size_t nleft = n; ssize_t nwritten; char *bufp = usrbuf; while (nleft > 0){ if ((nwritten = write(fd, bufp, nleft)) <= 0){ if (errno == EINTR) /* Interrupted by sig handler return */ nwritten = 0; /* and call write() again */ else return -1; /* errno set by write() */ } nleft -= nwritten; bufp += nwritten; } return n; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/15 19:57:42

通达信【支撑压力突破】主图指标公式CJM99源码分享

通达信【支撑压力突破】主图指标公式CJM99源码分享CJM1:HHV(MA(SMA(SMA(SMA(MA(C,1),2,1),2,1),2,1),1),13),COLOR00AAFF,LINETHICK4;CJM2:EMA(((SLOPE(CLOSE,21) * 20) CLOSE),42)COLORCC60FF,LINETHICK3;DRAWKLINE(H,O,L,C);CJM3:(MA(CLOSE,3)MA(CLOSE,6)MA(CLOSE,12)MA(CLO…

作者头像 李华
网站建设 2026/3/13 13:53:42

零代码玩转AI金融:股票分析报告生成全攻略

零代码玩转AI金融&#xff1a;股票分析报告生成全攻略 一、你真的需要“专业分析师”吗&#xff1f;——一个被低估的日常痛点 场景切入&#xff1a;每天打开财经APP的你&#xff0c;其实在重复做同一件事 早上九点&#xff0c;你习惯性点开股票软件&#xff0c;输入“AAPL”…

作者头像 李华
网站建设 2026/3/14 13:48:53

用 Dify 工作流 + Coze 插件 Doubao-Seedream-4.0 做一个完整的工作流

摘要 本文介绍了一个基于Coze平台的完整工作流程&#xff0c;包含四个关键节点&#xff1a;1)通过触发器启动流程&#xff1b;2)使用Doubao-Seedream-4.0进行数据处理&#xff1b;3)利用LLM将结果转换为Markdown格式&#xff1b;4)最终输出结果。工作流支持图片/文本输入&…

作者头像 李华
网站建设 2026/3/12 20:41:33

误差反向传播法的实现:像搭乐高一样构建神经网络

误差反向传播法的实现&#xff1a;像搭乐高一样构建神经网络 在深度学习中&#xff0c;实现一个神经网络可以像组装乐高积木一样简单——通过组合已经实现好的各种层&#xff0c;我们可以构建出功能强大的模型。今天&#xff0c;我们将深入探讨如何通过这种方法实现神经网络&a…

作者头像 李华
网站建设 2026/3/11 9:03:34

企业OA系统安全防护全攻略:从基础加固到长效防御,十分钟构建坚不可摧的办公安全屏障

OA系统作为企业数字化办公的核心中枢&#xff0c;承载着员工信息、财务数据、业务流程、商业机密等关键资产&#xff0c;是企业生产经营的“神经中枢”。随着数字化办公的深度普及&#xff0c;OA系统已成为网络攻击的重点目标——从弱密码爆破、漏洞利用到钓鱼攻击、内部泄密&a…

作者头像 李华
网站建设 2026/3/11 13:23:01

数字取证之浏览器取证:技术体系、实操方法与实战要点

浏览器作为用户网络行为的核心载体&#xff0c;记录了访问轨迹、数据交互、账户信息、文件操作等全维度行为痕迹&#xff0c;是数字取证中电子数据固定与分析的核心环节&#xff0c;广泛应用于网络犯罪调查、民事纠纷取证、企业合规审计等场景。浏览器取证的核心目标是无篡改提…

作者头像 李华