当前位置: 首页 > news >正文

1.26 实现文件拷贝的功能

使用dup2+fgets+printf实现文件拷贝的功能。

#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <pthread.h>
#include <semaphore.h>
#include <wait.h>
#include <signal.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <semaphore.h>
#include <sys/msg.h>
#include <sys/shm.h>
#include <sys/un.h>typedef struct sockaddr_in addr_in_t;
typedef struct sockaddr addr_t;
typedef struct sockaddr_un addr_un_t;int main(int argc, const char *argv[])
{int rfd = open(argv[1],O_RDONLY);if(rfd == -1){printf("您要复制的文件不存在!\n");return 1;}int wfd = open(argv[2],O_WRONLY | O_CREAT | O_TRUNC,0664);char buf[2] = {0};int stdout_backup = dup(1);int stdin_backup = dup(0);dup2(wfd,1);dup2(rfd,0);close(rfd);close(wfd);while(fgets(buf,2,stdin) !=NULL){printf("%c",buf[0]);}fflush(stdout);dup2(stdout_backup,1);dup2(stdin_backup,0);return 0;
}

http://www.lryc.cn/news/527131.html

相关文章:

  • ES6+新特性,var、let 和 const 的区别
  • HarmonyOS简介:HarmonyOS核心技术理念
  • 嵌入式C语言:结构体对齐
  • 【Rust自学】15.5. Rc<T>:引用计数智能指针与共享所有权
  • 谈谈RTMP|RTSP播放器视频view垂直|水平反转和旋转设计
  • decison tree 决策树
  • GO语言 链表(单向链表
  • Java:初识Java
  • Spring WebSocket 与 STOMP 协议结合实现私聊私信功能
  • 从0到1:C++ 开启游戏开发奇幻之旅(一)
  • 基于Flask的哔哩哔哩综合指数UP榜单数据分析系统的设计与实现
  • 在php中怎么打开OpenSSL
  • oracle 分区表介绍
  • wxwidgets直接获取系统图标,效果类似QFileIconProvider
  • Arduino大师练成手册 -- 控制 PN532 NFC 模块
  • 解决日志中 `NOT NULL constraint failed` 异常的完整指南
  • C动态库的生成与在Python和QT中的调用方法
  • UE求职Demo开发日志#7 强化属性完善
  • Day35:字符串的大小写转换
  • 喜报丨迪捷软件入选2025年浙江省“重点省专”
  • 深度剖析 PyTorch框架:从基础概念到高级应用的深度学习之旅!
  • 基于C++的DPU医疗领域编程初探
  • Linux 执行 fdisk -l 出现 GPT PMBR 大小不符 解决方法
  • 图漾相机搭配VisionPro使用简易教程
  • 第一届“启航杯”网络安全挑战赛WP
  • 大模型训练策略与架构优化实践指南
  • 新电脑安装系统找不到硬盘原因和解决方法来了
  • 【Linux】21.基础IO(3)
  • 深度学习算法:从基础到实践
  • 27. 【.NET 8 实战--孢子记账--从单体到微服务】--简易报表--报表服务