fetch():mmap error. offset: 16777139, len: 16777216, file: /data/crawler/urlda ta/downques/allques/0/url.0000000000. Invalid argument. 这是程序打出来的日志,mmap的offset 16777139,长度16777216,错误原因是Invalid argument,请大家看看是怎么回事
单进程mmap了10个data files(为了能顺序增长), 这个进程会收到两种请求: read/update, update的请求数在高峰期大概500个左右. 周末的时候机器突然停电了, 发现数据丢了不少, 就是说update的请求虽然写到了mmap里面, 但并没有真正写到data files去. 原先以为mmap在收到写请求的时候, 会立即同步到文件系统去, 但现在看来不是这样的. 想知道linux下的mmap, 是使用怎么样机制来进行写请求? 使用一个定时器去msync这个mmap会否有用? ...
如下代码: int i=3,fd; char *mem; if((fd=open("test",O_RDWR))<0){ .... } mem=mmap(&i,10,PROT_READ|PROT_WRITE,MAP_FILE|MAP_SHARED,fd,0); 对这个mem字符串做个反序操作, 可结果是从第一个字符,而不是从第三个字符开始???? 是mmap被系统强行认为从零开始吗?[/code]
我的程序希望文件与我用shmget函数建立的共享内存绑定实现映射关系,编译成功,但运行程序总是报mmap无效参数错???mmap函数是否可以自己分配共享内存区????
程序原码如下:
[code]
#include
问题:用户空间调用mmap时老是返回NULL 用户空间代码片断 char * p; int i; int fd; int len = 512; ...
在模块中可以用filp_open打开一个文件 并且用返回的struct file *fp进行读写 fp->;f_op->;read/write 1)现在我想进行mmap操作 请问怎么做? 2)怎样munmap? 高手支援一下