|
有文件 "/sys/hello.dat",大小是10字节,按以下代码写入数据
int fd;
fd = open("/sys/system.dat", O_WRONLY | O_CREAT|O_TRUNC , 0);
if (fd >0)
{
write(fd, &buf, 7);
close(fd);
}
结果,文件大小仍然为10字节.一步步进入源代码查看代码执行情况,在ff.c文件f_open函数中第6行,文件大小变成了0,但是到了第15行执行完move_window后又变成了10
1 if (mode & FA_CREATE_ALWAYS)
2 { /* Resize it to zero on over write mode */
3 cl = ((DWORD)LD_WORD(dir+DIR_FstClusHI) << 16) | LD_WORD(dir+DIR_FstClusLO); /* Get start cluster */
4 ST_WORD(dir+DIR_FstClusHI, 0); /* cluster = 0 */
5 ST_WORD(dir+DIR_FstClusLO, 0);
6 ST_DWORD(dir+DIR_FileSize, 0); /* size = 0 */
7 dj.fs->wflag = 1;
8 ps = dj.fs->winsect; /* Remove the cluster chain */
9 if (cl) {
10 res = remove_chain(dj.fs, cl);
11 if (res) LEAVE_FF(dj.fs, res);
12 dj.fs->last_clust = cl - 1; /* Reuse the cluster hole */
13 }
14
15 res = move_window(dj.fs, ps);
16 if (res != FR_OK) LEAVE_FF(dj.fs, res);
17 }
是否是代码有错误呢,请高手指正 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
如果天空是黑暗的,那就摸黑生存;
如果发出声音是危险的,那就保持沉默;
如果自觉无力发光,那就蜷伏于牆角。
但是,不要习惯了黑暗就为黑暗辩护;
也不要为自己的苟且而得意;
不要嘲讽那些比自己更勇敢的人。
我们可以卑微如尘土,但不可扭曲如蛆虫。
|