写项目的时候,当我把实现Linux的基本功能的代码写完之后,写断点续传时,有点难度(我对lseek学的不好)。
send这个函数是不能传整形值的只能传字符类型
1、open( int open (const char *filename,int flag,/* int mode */) )
返回值: 1)-1 出错 2) >=0 返回一个文件描述符fd
filename:打开的文件名(不给路径时只会在当前目录下搜索)
flag :打开的方式 O_RDONLY (只读) O_WRONLY (只写) O_RDWR (读写) O_APPEND(追加)
mode:创建文件时,我们给这个文件的属性 (nnn)
2、read(int read(int fd , void * buf , size_t size))
fd:读取的文件 ,由open的返回值指定
buf:指定读取的数据存储的起始位置
size:指定一次最多读取的字节个数(不能超过缓冲区的大小)
返回值:1)-1出错 2)返回读取的数据字节数
3、write(int write(int fd , void *buf ,size_t size))
fd:写入的文件描述符
buf :写入的数据的起始位置
size:写入数据的长度(字节)
返回值:1)-1出错 2)返回读取的数据字节数
4、close(int close(int fd))
fd:关闭的文件描述符
返回值:1)-1 出错 2)0 成功
5、lseek的用法
lseek()是用来控制一个打开文件的读写位置
lseek是一个系统调用函数,其次它的参数有三个(文件类型指针,位移量,起始点),参数offset 为根据参数whence来移动读写位置的位移数.
第三个参数有三种情况
EEK_SET 将读写位置指向文件头后再增加offset个位移量。
SEEK_CUR 以目前的读写位置往后增加offset个位移量。
SEEK_END 将读写位置指向文件尾后再增加offset个位移量。
如果将第二个参数置0,那这三个分别代表,将fd指向文件开始,fd指向目前位置,fd指向文件尾部。
那么我们就可以用来获取文件大小了 int size = lseek(fd,0,SEEK_END);