文件操作
底层文件操作(关于文件的系统调用)
lseek
(1) 用法
man 2 lseek
(2) 返回值
成功:返回新的文件位置与文件头之间偏移
失败: -1
实例:从文件偏移量100的位置拷贝100个字节到另一个文件
lseek_demo.c
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define FILE1_NAME "lseek_demo.c"
#define FILE2_NAME "lseek_demo_2.c"
#define SIZE 100
int main(void){
int file1, file2;
char buffer[1024];
int ret;
file1 = open(FILE1_NAME, O_RDONLY);
if (file1 < 0) {
printf("open file %s failed\n", FILE1_NAME);
exit(-1);
}
file2 = open(FILE2_NAME, O_WRONLY|O_CREAT, S_IRUSR|S_IWUSR);
if (file2 < 0) {
printf("open file %s failed\n", FILE2_NAME);
exit(-1);
}
//file size
ret = lseek(file1, 0, SEEK_END);
printf("file size: %d\n", ret);
ret = lseek(file1, 100, SEEK_SET);
printf("lseek ret: %d\n", ret);
ret = read(file1, buffer, SIZE);
if(ret > 0){
buffer[ret] = '\0';
printf("read[%d]: %s\n", ret, buffer);
write(file2, buffer, SIZE);
}
close(file1);
close(file2);
return 0;
}
运行结果:
具体
结语:
用的不是很多(老师)
时间: 2020-07-31