当前位置: 技术问答>linux和unix
mmap问题!
来源: 互联网 发布时间:2016-06-07
本文导语: int fd; struct stat st; char *ptr; char objid[MAXLINE]; fd = open("test.txt",O_RDONLY); fstat(fd,&st); ptr = mmap(NULL,st.st_size,PROT_READ,MAP_PRIVATE,fd,0); if(ptr == MAP_FAILED) printf("mmap failed!n"); 现在由上述代码已经将文件test.tx...
int fd;
struct stat st;
char *ptr;
char objid[MAXLINE];
fd = open("test.txt",O_RDONLY);
fstat(fd,&st);
ptr = mmap(NULL,st.st_size,PROT_READ,MAP_PRIVATE,fd,0);
if(ptr == MAP_FAILED)
printf("mmap failed!n");
现在由上述代码已经将文件test.txt映射到了内存里面,我现在想对映射到内存中的文件进行一些读操作:由于之前test.txt中是按行存储的,我想也对映射到内存中的文件进行按行读,但是不知道怎么实现?因为ptr返回的是内存的首地址,而不是一个文件指针
有方法实现按行读吗?
这里说的按行读,是按原test.txt中存放的形式读
|
按行读,不就是按行分割符'n'读.
strtok(ptr, "n");不就完了吗
strtok(ptr, "n");不就完了吗
|
strtok 需要可读可写权限,你改成如下试试:
fd = open("test.txt", O_RDWR);
mmap(NULL, st.st_size, PROT_READ | PROT_WRITE, MAP_PRIVATE, fd, 0);