Linux 下read write 实现cp功能
时间: 2024-01-30 15:10:49 浏览: 75
在 Linux 下实现 cp 命令的功能可以使用 read 和 write 函数来进行文件的读写操作。具体实现方式如下:
```
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
#define MAX_BUFF_SIZE 1024
int main(int argc, char *argv[]) {
if (argc != 3) {
printf("Usage: %s source_file target_file\n", argv[0]);
return -1;
}
int src_fd = open(argv[1], O_RDONLY);
if (src_fd < 0) {
printf("Open source file failed!\n");
return -1;
}
int dst_fd = open(argv[2], O_CREAT | O_WRONLY, 0666);
if (dst_fd < 0) {
printf("Create target file failed!\n");
return -1;
}
char *buff = (char *) malloc(MAX_BUFF_SIZE);
int read_count = 0;
while ((read_count = read(src_fd, buff, MAX_BUFF_SIZE)) > 0) {
int write_count = write(dst_fd, buff, read_count);
if (write_count < read_count) {
printf("Write target file failed!\n");
return -1;
}
}
free(buff);
close(src_fd);
close(dst_fd);
return 0;
}
```
上述代码实现了将源文件复制到目标文件的功能。在程序中,首先通过 open 函数打开源文件和目标文件,然后使用 read 和 write 函数分别对源文件和目标文件进行读写操作。其中,每次读取的数据大小为 MAX_BUFF_SIZE,通过 malloc 函数动态分配缓冲区空间。最后通过 close 函数关闭文件句柄。
阅读全文