Linux IO系统编程,利用系统IO函数 实现 cp 功能,要求文件名1,文件名2 从main函数传入
时间: 2023-06-15 16:06:04 浏览: 101
下面是一个简单的实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
#define BUFFER_SIZE 4096
int main(int argc, char *argv[]) {
if (argc != 3) {
fprintf(stderr, "Usage: %s <file1> <file2>\n", argv[0]);
exit(EXIT_FAILURE);
}
int fd1 = open(argv[1], O_RDONLY);
if (fd1 < 0) {
perror(argv[1]);
exit(EXIT_FAILURE);
}
int fd2 = open(argv[2], O_WRONLY | O_CREAT | O_TRUNC, 0644);
if (fd2 < 0) {
perror(argv[2]);
exit(EXIT_FAILURE);
}
char buffer[BUFFER_SIZE];
ssize_t n;
while ((n = read(fd1, buffer, BUFFER_SIZE)) > 0) {
if (write(fd2, buffer, n) != n) {
perror(argv[2]);
exit(EXIT_FAILURE);
}
}
if (n < 0) {
perror(argv[1]);
exit(EXIT_FAILURE);
}
if (close(fd1) < 0) {
perror(argv[1]);
exit(EXIT_FAILURE);
}
if (close(fd2) < 0) {
perror(argv[2]);
exit(EXIT_FAILURE);
}
return 0;
}
```
这个程序先检查命令行参数,如果参数不足就输出用法信息并退出。然后打开输入文件和输出文件,如果打开失败就输出错误信息并退出。接着使用 read 和 write 函数循环读取输入文件并写入输出文件,直到读到文件末尾。最后关闭输入文件和输出文件。
阅读全文