日期:2014-05-16  浏览次数:20777 次

linux_c 文件读写
lseek(移动文件流读写位置)

定义函数 int lseek(int fildes,off_t offset,int whence);

fildes 为文件描述符号
offset  为偏移量
whence 下列其一
    SEEK_SET 文件头offset位移偏移
    SEEK_END 文件尾offset位置偏移
    SEEK_CUR 当前位置offset位置偏移
参数为SEEK_CUR 或SEEK_END时offset允许负值

定义函数 open
     int open(const char *pathname, int flags);
     int open(const char *pathname, int flags, mode_t mode);
其中mode_t mode指如果文件创建,所创建文件的权限
#include<stdio.h>
#include<stdlib.h>
#include<fcntl.h>
#include<string.h>

void my_err(const char *erro_string,int line)
{
	fprintf(stderr,"line:%d",line);
	perror(erro_string);
	exit(1);
}

int main()
{
	int 	fd;
	int 	ret;
	char	read_buf[32];
	if((fd = open("text_txt.log",O_RDWR,S_IRWXU)) == -1){
		my_err("open",__LINE__);
	}
	lseek(fd,0,SEEK_SET);
	if(write(fd,"Hello\n",6) != 6){
		my_err("failed__to_write",__LINE__);
	}

	lseek(fd,0,SEEK_SET);
	if((ret = read(fd,read_buf,6)) < 0){
		my_err("read",__LINE__);
	}
	
	read_buf[ret] = '\0';
	printf("%s\n",read_buf);
	close(fd);
	return 0;
}