手机版
你好,游客 登录 注册
背景:
阅读新闻

Linux下C语言实现多线程文件复制

[日期:2013-03-22] 来源:blog.sina.com.cn/staratsky  作者:流星 [字体: ]

1、具体思路

把一个文件分成N份,分别用N个线程copy,
 
每个线程只读取指定长度字节大小的内容
 
最后一个线程的源文件所指定的结束位置是文件的实际大小
 
每个线程读取指定源文件部分的起始位置和结束位置的内容到缓冲区
 
每个线程将缓存中的内容写入目的文件的指定开始位置和结束位置
 
主线程必须等到所有线程copy完成后才能退出
 
2.有关文件操作的函数
 
2.1. 文件的打开和关闭
 
2.1.1 open()函数
 
      open()函数的作用是打开文件, 其调用格式为:
 
        int open(char *filename, int access); 
 
  该函数表示按access的要求打开名为filename的文件,
 
  返回值为文件描述字
 
  open()函数打开成功, 返回值就是文件描述字的值(非负值), 否则返回-1。 
 
2.1.2 close()函数
 
      close()函数的作用是关闭由open()函数打开的文件, 其调用格式为:
 
          int close(int handle); 
 
      该函数关闭文件描述字handle相连的文件。
 
2.2.读写函数
 
2.2.1 read()函数
 
      read()函数的调用格式为:
 
          int read(int handle, void *buf, int count); 
 
      read()函数从handle(文件描述字)相连的文件中, 读取count个字节放到buf所指的缓冲区中,
 
      返回值为实际所读字节数, 返回-1表示出错。返回0 表示文件结束。
 
2.2.2 write()函数
 
      write()函数的调用格式为:
 
          int write(int handle, void *buf, int count);   
 
 
      write()函数把count个字节从buf指向的缓冲区写入与handle相连的文件中,
 
      返回值为实际写入的字节数
 
2.3.随机定位函数
 
lseek()函数
 
      lseek()函数的调用格式为:
 
        int lseek(int handle, long offset, int fromwhere); 
 
      该函数对与handle相连的文件位置指针进行定位, 功能和用法与fseek() 函数相同。

linux
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款