如何解决这个令人头疼的问题?

我的程序需要将数据保存在一个文件中,在正常情况下可以顺利完成,可是用户提出如果文件正在存储时目标机突然调电,调电前的数据在下次开机时也要读出来,可是我发现突然调电后再开机无法打开这个文件,文件虽然存在,但是打不开,错误是“corrupted file system”,我以前遇到过这个现象,用“chkfsys”可以修复错误的文件,但是也不能每次都这样做呀!

文件是存在什么上面,硬盘吗?

有几个办法。

  1. 将数据存在独自的分区里,每次开机chkfsys数据分区。

  2. 传nobusy命令行参数给 fs-qnx4 (devb-eide blk qnx4 nobusy),这样开机后你可以直接读写那个数据文件了(不会再有corrupted filesystem错)。但你要自己知道到那里是有效的数据。

  3. 可以每一次将数据存入不同的文件中,然后用另一个线程把它们收集到一起。不过这样,数据的存入会慢很多。