我是Srinivasa Raghavan,也是这个小组的新成员.
我面临着非缓存文件的问题.代码如下所示:
main()
{
int fd;
char buf[512] = {'\0'};
fd = fopen("Sample.bin",O_RDONLY);
fcntl(fd, F_NOCACHE, 1);
fcntl(fd, F_RDAHEAD, 1);
read(fd, buf, sizeof(buf));
close(fd);
if(buf[0] == 'x' )
print("non-cached\n");
else
printf("cached\n")
}
Run Code Online (Sandbox Code Playgroud)
问题是,F_NOCACHE不能正常工作,并且我一直只缓存消息.firware将始终更新sample.bin中的值'x'.
如果我把整个东西(open,fcntl,read和close)放在一个不确定的循环中(需要很长时间才能出来),如上所述,上面的代码是有效的.
main()
{
while(1)
{
open...
fcntl(.., F_NOCACHE)
read(....
close..
if(buf[0] == 'x')
break;
}
}
Run Code Online (Sandbox Code Playgroud)
我真的坚持了一个星期,我想知道F_NOCACHE的确切行为,任何信息都将受到高度赞赏.
提前致谢,Srinivasa Raghavan
| 归档时间: |
|
| 查看次数: |
2360 次 |
| 最近记录: |