当前位置:
首页 >
linux-IO之copy的实现
发布时间:2025/3/15
50
豆豆
生活随笔
收集整理的这篇文章主要介绍了
linux-IO之copy的实现
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
文章目录
- 文件描述符
- 重点函数说明
- copy的实现
文件描述符
所有的I/O操作的系统调用都以文件描述符,一个非负整数(通常是小整数),来指代打开的文件。
重点函数说明
- open函数打开pathname所标识的文件,并返回文件描述文件描述符
- read函数,调用从fd所指代的打开的文件中,读取至多count字节的数据,并保存到buf中去
- write函数,调用从buf中读取多达count字节数,将数据写入到fd指代的已打开的文件中
- close函数, 关闭已打开的文件描述符 fd
copy的实现
#include <sys/stat.h> #include <fcntl.h> #include <stdio.h> #include <string.h> #include <unistd.h> #include <stdlib.h>#ifndef BUF_SIZE /* Allow "cc -D" to override definition */ #define BUF_SIZE 1024 #endifint main(int argc, char *argv[]) {int inputFd, outputFd, openFlags;mode_t filePerms;ssize_t numRead;char buf[BUF_SIZE];if (argc != 3 || strcmp(argv[1], "--help") == 0)printf("%s old-file new-file\n", argv[0]);/* Open input and output files */inputFd = open(argv[1], O_RDONLY);if (inputFd == -1)printf("opening file %s", argv[1]);openFlags = O_CREAT | O_WRONLY | O_TRUNC;filePerms = S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP |S_IROTH | S_IWOTH; /* rw-rw-rw- */outputFd = open(argv[2], openFlags, filePerms);if (outputFd == -1)printf("opening file %s", argv[2]);/* Transfer data until we encounter end of input or an error */while ((numRead = read(inputFd, buf, BUF_SIZE)) > 0)if (write(outputFd, buf, numRead) != numRead)printf("couldn't write whole buffer");if (numRead == -1)printf("read");if (close(inputFd) == -1)printf("close input");if (close(outputFd) == -1)printf("close output");exit(EXIT_SUCCESS); } 与50位技术专家面对面20年技术见证,附赠技术全景图总结
以上是生活随笔为你收集整理的linux-IO之copy的实现的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 作者:石勇(1956-),男,中国科学院
- 下一篇: linux编程-open函数和write