news 2026/4/22 19:18:23

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/4/18 12:58:41

学长亲荐2026 TOP9 AI论文工具:专科生毕业论文神器测评

学长亲荐2026 TOP9 AI论文工具&#xff1a;专科生毕业论文神器测评 2026年AI论文工具测评&#xff1a;为何值得一看&#xff1f; 随着人工智能技术的不断进步&#xff0c;AI论文工具已经成为学术写作中不可或缺的助手。对于专科生而言&#xff0c;撰写毕业论文不仅是一项重要的…

作者头像 李华
网站建设 2026/4/16 9:43:44

05.this的绑定规则、优先级、和相关面试题

关于闭包内存泄漏案例说明 前面讲的案例里面说下面数组占据的大小是 4M&#xff0c;但是有同学有疑惑: number 占据的大小不是 8 byte&#xff0c;不应该是 8M 吗&#xff1f; function createFnArray() {// 整数占据 4 个字节// arr 占据内存大小&#xff1a;1024 * 1024 * …

作者头像 李华
网站建设 2026/4/18 23:05:02

【风电光伏功率预测】预测不是模型,是“账单”:风电光伏功率预测如何做成“可接入、可维护、可复盘”的SaaS?

过去几年&#xff0c;功率预测最容易陷入一个误区&#xff1a;把“模型效果”当成终点。但市场走到今天&#xff0c;功率预测早就不只是技术展示&#xff0c;它直接进入了“调度—交易—考核—结算”的链路&#xff1a;电力现货市场在加速推进、强调技术支持系统校验与连续运行…

作者头像 李华
网站建设 2026/4/21 13:57:54

活出“掌控感”:重建不疲惫的幸福日常

0. 咱们先聊个扎心的“隐形疲惫”哎&#xff0c;你有没有过这种感觉&#xff1f;明明这一天也没干什么惊天动地的大事&#xff0c;没搬砖也没跑马拉松&#xff0c;但到了晚上十点&#xff0c;整个人就像被抽了筋似的&#xff0c;瘫在沙发上一根手指头都不想动。 脑子里像有一团…

作者头像 李华
网站建设 2026/4/17 13:01:48

分体式位移传感器:工业精密测量的“空间魔术师”

在工业自动化、智能制造与高端装备领域&#xff0c;位移测量是保障生产精度与效率的核心环节。然而&#xff0c;当测量场景面临高温、高压、空间狭窄或强电磁干扰等极端条件时&#xff0c;传统一体式位移传感器常因安装受限、环境适应性差而“力不从心”。此时&#xff0c;分体…

作者头像 李华
网站建设 2026/4/20 14:18:03

计算机毕设java飞机票管理系统 基于Java的航空票务管理平台设计与实现 Java技术驱动的航班票务管理系统开发

计算机毕设java飞机票管理系统7h5v09 &#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。随着互联网的普及和航空出行的日益频繁&#xff0c;传统的飞机票管理模式已难以满足现代用户…

作者头像 李华