硬盘空间大着呢。fwrite为什么出错?
PCI板卡接收通讯数据,每秒20M字节左右。用7200转的硬盘保存。调用的是fwrite。发现在不同的机器上都出现fwrite出错。研华的工控机一般在写到几个G后出错。惠普的商用机器一般在40~55G后出错。有点纳闷。为什么啊?不至于20M字节的速度也没有吧? 1 单独一个文件写了那么多数据之后出错,还是说写了很多文件后,总大小超过几个G之后出错?如果文件系统是FAT32, 单个文件大小是不能超过2G的; NTFS则没有这个限制;
2 你使用的电脑是什么芯片组?
比较老的电脑, 硬盘是ATA接口, ATA接口速度本来就慢, ATA 100, 再加上OS的文件系统,实际用户能够使用到的带宽肯定达不到100MByte/s;
建议你使用一个服务器(服务器的架构和PC机的架构不一样,其磁盘系统和通讯系统的性能比PC机高的多)或者具有SATA硬盘接口的性能高一点的PC机来测试; XP系统 NTFS sata硬盘。7200转、5600转都测试过。单个文件到几G或者40~50G就出错。调试发现是fwrite函数返回的字节数和要写入的不一致。每次调用fwrite后都调用fflush了。搞不明白这个是为什么。 :funk: 单文件几十个G最好别这么玩, 出点小意外全部数据OVER. 你应该这样做:在内存中开辟一块环形缓冲区,PCI驱动只管往缓冲区写;外面使用一个工作线程从缓冲区里读,并写入到硬盘里。 fflush不要随便用……交给文件系统来管理就好了
页:
[1]