前几天碰到一个棘手的BUG,几经排查,确定程序挂在一处对fwrite()函数的调用上。最先怀疑的是自己代码的问题,于是从共享变量到任务管理到数据结构开始调试,可发现不管怎么改,总是挂在这个地方。无奈之下,对嫌疑最大的进程逐行屏蔽观察效果,最终锁定在rename()函数上,还是不怎么相信,于是在TCS环境下单单测试rename(),果然出错,TCS5.2下的rename()函数不能用!!
用其他的表达代替rename(),问题不再出现。可为什么在一个进程调用rename()失败会导致另一个进程fwrite()挂住,还是想不明白。只能提醒自己注意,也希望知其所以然的大侠能指教。