用POSIX编写程序完成文件复制功能
时间: 2024-05-08 18:21:07 浏览: 83
可以使用 POSIX 标准库中的函数来完成文件复制功能。下面是一个简单的例子:
```c
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
#define BUFFER_SIZE 1024
int main(int argc, char *argv[]) {
if (argc != 3) {
fprintf(stderr, "Usage: %s <source_file> <destination_file>\n", argv[0]);
exit(EXIT_FAILURE);
}
int source_fd = open(argv[1], O_RDONLY);
if (source_fd == -1) {
perror("open source file");
exit(EXIT_FAILURE);
}
int dest_fd = open(argv[2], O_WRONLY | O_CREAT | O_TRUNC, 0666);
if (dest_fd == -1) {
perror("open destination file");
exit(EXIT_FAILURE);
}
char buffer[BUFFER_SIZE];
ssize_t bytes_read, bytes_written;
while ((bytes_read = read(source_fd, buffer, BUFFER_SIZE)) > 0) {
bytes_written = write(dest_fd, buffer, bytes_read);
if (bytes_written == -1) {
perror("write to destination file");
exit(EXIT_FAILURE);
}
}
if (bytes_read == -1) {
perror("read from source file");
exit(EXIT_FAILURE);
}
if (close(source_fd) == -1) {
perror("close source file");
exit(EXIT_FAILURE);
}
if (close(dest_fd) == -1) {
perror("close destination file");
exit(EXIT_FAILURE);
}
return 0;
}
```
该程序使用 `open` 函数打开源文件和目标文件,并使用 `read` 和 `write` 函数分别从源文件中读取数据并将其写入目标文件中。在复制完成后,程序使用 `close` 函数关闭源文件和目标文件。
请注意,这只是一个简单的例子,仅适用于小文件。对于更大的文件,您可能需要使用更高级的 I/O 编程技巧,例如使用缓冲区和 `sendfile` 函数。
阅读全文