news 2026/5/1 9:02:16

I/O重定向程序

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
I/O重定向程序

从标准输入拷贝文件或从指定磁盘文件拷贝到标准输出。

#include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> #include <stdio.h> #include <stdlib.h> #include <errno.h> #include <string.h> #define DEF_MODE S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH #define DEF_UMASK S_IWGRP|S_IWOTH #define RIO_BUFSIZE 8192 #define MAXLINE 10 typedef struct { int rio_fd; /* Descriptor for this internal buf */ int rio_cnt; /* unread bytes in internal buf */ char *rio_bufptr; /* Next unread bytes in internal buf */ char rio_buf[RIO_BUFSIZE]; /* Internal buffer */ } rio_t; void rio_readinitb(rio_t *rp, int fd); ssize_t rio_readlineb(rio_t *rp, void *usrbuf, size_t maxlen); static ssize_t rio_read(rio_t *rp, char *usrbuf, size_t n); ssize_t rio_writen(int fd, void *usrbuf, size_t n); int main(int argc, char **argv) { int n,fd1; rio_t rio; char buf[MAXLINE]; if((argc!=1) && (argc!=2)) { fprintf(stderr,"usage : %s <infile>\n",argv[0]); exit(1); } if(argc==2){ int fd; if((fd=open(argv[1], O_RDONLY,0))<0) { fprintf(stderr,"Couldn'tread%s\n",argv[1]); exit(1); } dup2(fd, STDIN_FILENO); close(fd); } rio_readinitb(&rio, STDIN_FILENO); while((n = rio_readlineb(&rio, buf, MAXLINE)) != 0) rio_writen(STDOUT_FILENO, buf, n); 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; } void rio_readinitb(rio_t *rp, int fd) { rp->rio_fd = fd; rp->rio_cnt = 0; rp->rio_bufptr = rp->rio_buf; } ssize_t rio_readlineb(rio_t *rp, void *usrbuf, size_t maxlen) { int n, rc; char c, *bufp = usrbuf; for (n = 1; n < maxlen; n++) { if ((rc = rio_read(rp, &c, 1)) == 1) { *bufp++ = c; if (c == '\n') break; } else if (rc == 0) { if (n == 1) return 0; /* EOF, no data read */ else break; /* EOF, some data was read */ } else return -1; /* Error */ } *bufp = 0; return n; } static ssize_t rio_read(rio_t *rp, char *usrbuf, size_t n) { int cnt; while (rp->rio_cnt <= 0) { /* Refill if buf is empty */ rp->rio_cnt = read(rp->rio_fd, rp->rio_buf, sizeof(rp->rio_buf)); if (rp->rio_cnt < 0) { if (errno != EINTR) /* Interrupted by sig handler return */ return -1; } else if (rp->rio_cnt == 0) /* EOF */ return 0; else rp->rio_bufptr = rp->rio_buf; /* Reset buffer ptr */ } /* Copy min(n, rp->rio_cnt) bytes from internal buf to user buf */ cnt = n; if (rp->rio_cnt < n) cnt = rp->rio_cnt; memcpy(usrbuf, rp->rio_bufptr, cnt); rp->rio_bufptr += cnt; rp->rio_cnt -= cnt; return cnt; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/25 15:18:27

IMU如何成为机器人自主移动的核心传感器

IMU是机器人感知自身运动状态的核心传感器&#xff0c;通过内置的加速度计与陀螺仪测量机器人的加速度与角速度&#xff0c;经算法解算后为机器人的控制、导航、平衡等功能提供关键数据&#xff0c;广泛应用于轮式机器人、足式机器人、无人机、机械臂等各类机器人系统中。核心功…

作者头像 李华
网站建设 2026/5/1 8:36:21

解析得物商品详情:API 接口调用实践与数据结构分析

得物平台&#xff08;原毒APP&#xff09;作为国内领先的潮流电商平台&#xff0c;其商品数据具有很高的价值。对于开发者而言&#xff0c;了解如何通过其提供的 API 接口获取商品详情信息&#xff0c;是进行数据分析、比价工具开发、库存监控等应用的基础。本文将聚焦于得物平…

作者头像 李华
网站建设 2026/5/1 5:26:11

车辆轨迹系统设计与实现

车辆轨迹系统设计与实现 一、设计背景与意义 车辆轨迹追踪在智能交通、物流车队管理、私家车防盗、网约车监管等领域具有重要应用价值。传统轨迹记录方式依赖车载终端与后台服务器简单交互&#xff0c;存在定位精度低、数据传输延迟、轨迹补全能力弱等问题&#xff0c;难以满足…

作者头像 李华
网站建设 2026/4/23 17:12:25

黑芝麻智能华山A2000 BaRT工具链:全场景智驾模型高效编译与部署

一、引言 随着智驾模型参数规模与计算复杂度指数级增长&#xff0c;大模型应用与车端硬件、性能功耗的矛盾愈发凸显&#xff0c;成为技术量产的关键瓶颈。在此背景下&#xff0c;黑芝麻智能华山A2000 BaRT 工具链以 MLIR 框架为基础&#xff0c;为辅助驾驶模型规模化、高性能、…

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

本年度必看!最佳信息登记二维码推荐榜单

在数字化的时代&#xff0c;信息登记二维码扮演着越来越重要的角色。通过二维码&#xff0c;企业、政府和个人可以高效管理信息&#xff0c;提升登记的便捷性和准确性。本文将从多个角度分析最佳信息登记二维码工具。每种工具都有其独特的功能和适用场景&#xff0c;让我们轻松…

作者头像 李华
网站建设 2026/4/28 22:51:45

django+Pythonuniapp的鲜花知识分享与销售商城系统的设计与实现小程序

文章目录 系统概述技术架构核心功能模块创新点应用价值 系统设计与实现的思路主要技术与实现手段源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01; 系统概述 该系统基于Django后端框架与Python语言开发&#xff0c;结合UniApp跨平台前端技…

作者头像 李华