C语言多线程复制文件
时间: 2023-11-23 21:56:04 浏览: 63
在C语言中,可以使用多线程来复制文件。下面是一个简单的例子:
```c
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#define BUF_SIZE 1024
void *copy_file(void *arg);
int main(int argc, char *argv[]) {
if (argc != 3) {
fprintf(stderr, "Usage: %s <source> <destination>\n", argv[0]);
exit(EXIT_FAILURE);
}
pthread_t tid;
int ret = pthread_create(&tid, NULL, copy_file, argv);
if (ret != 0) {
perror("pthread_create");
exit(EXIT_FAILURE);
}
pthread_join(tid, NULL);
return 0;
}
void *copy_file(void *arg) {
char *src = ((char **)arg)[1];
char *dst = ((char **)arg)[2];
FILE *src_file = fopen(src, "rb");
if (src_file == NULL) {
perror("fopen");
pthread_exit(NULL);
}
FILE *dst_file = fopen(dst, "wb");
if (dst_file == NULL) {
perror("fopen");
fclose(src_file);
pthread_exit(NULL);
}
char buf[BUF_SIZE];
size_t nread;
while ((nread = fread(buf, 1, BUF_SIZE, src_file)) > 0) {
fwrite(buf, 1, nread, dst_file);
}
fclose(src_file);
fclose(dst_file);
pthread_exit(NULL);
}
```
上面的代码使用了pthread库来创建线程。在主函数中,我们创建了一个线程,并将源文件和目标文件作为参数传递给线程函数copy_file。线程函数中,我们打开源文件和目标文件,并使用fread和fwrite函数来复制文件内容。最后,我们关闭文件并退出线程。
相关推荐
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)