smthbbs系统,有的时候编辑过的文章来源之后会出来一些乱七八糟的字符。也很难重现这个毛病,今天碰到一个可以重现的,调试抓了一段系统调用贴上来看看。
那个文章原来是889个字节,修改之后因为修改记录用了我的名字,所以修改后是886个字节。但是修改完了那个文件居然还是889个字节,最后三个字符是[m\n,也就是那个老的889字节的文件的最后三个字符。在ctrl+w回车之后捕捉下来的系统调用有一部分是
open("tmp/7447.editpost", O_RDONLY) = 3
open("boards/NLLog/M.1083522217.70", O_WRONLY|O_CREAT, 0600) = 4
read(3, "\267\242\320\305\310\313: atppp (Big Mouse), \320\305\307"..., 10240) = 886
write(4, "\267\242\320\305\310\313: atppp (Big Mouse), \320\305\307"..., 886) = 886
read(3, "", 10240) = 0
close(4) = 0
close(3) = 0
getpid() = 7447
msgsnd(0, {2, "\307<\225@\27\35\0\0atppp\0\0\0\0\0\0\0edited post "...}, 85, MSG_NOERROR|IPC_NOWAIT) = 0
显然从tmp/下面f_cp回版面文件的时候确实是886个字节。我特意把unlink(tmp/7447.editpost)那句话注释了,然后修改文章之后那个文件确实是886个字节。可是为什么那个f_cp到M.1083522217.70文件变成了889个字节呢?f_cp()也就标准的copy函数,难道是我kernel有问题,//汗。
--