mac os x lion中的fwrite()和fread()在Linux设备和mac之间共享文件的情况下需要很长时间

mac os x lion中的fwrite()和fread()在Linux设备和mac之间共享文件的情况下需要很长时间,c,macos,file,operating-system,fwrite,C,Macos,File,Operating System,Fwrite,我有一个简单的Mac C程序,它将数据写入连接到Mac计算机的USB设备上的原始数据文件。原始数据文件存储在FAT32文件格式的设备中。设备上运行的Linux C程序使用fopen()打开相同的文件,并使用fread()读取Mac程序写入的相同数据 fread()和fwrite()操作太慢,需要很长时间才能更新 Mac C程序: fp=fopen("/Volumes/Untitled/rawdatafile","rb+"); fcntl(fileno(fp),F_NOCACHE,1); 是否

我有一个简单的Mac C程序,它将数据写入连接到Mac计算机的USB设备上的原始数据文件。原始数据文件存储在FAT32文件格式的设备中。设备上运行的Linux C程序使用
fopen()
打开相同的文件,并使用
fread()
读取Mac程序写入的相同数据

fread()
fwrite()
操作太慢,需要很长时间才能更新

Mac C程序:

fp=fopen("/Volumes/Untitled/rawdatafile","rb+");

fcntl(fileno(fp),F_NOCACHE,1);

是否有其他API或标志可在共享模式下打开文件

这样做不安全。您只是没有损坏数据,因为您运行此操作的时间不够长。在您的USB设备上,您必须在连接到USB时卸载文件系统,并且在USB主机(即mac或pc)卸载之前不要重新安装

如果您希望能够同时从设备和主机进行读/写,则有两个主要选项:

  • 媒体传输协议
  • 假装是网络设备并提供本地网络共享链接

  • 您是否建议USB设备具有同时运行的嵌入式Linux操作系统?你说慢是什么意思-毫秒,秒,分钟?您有点暗示您想要无缓冲的直接I/O,但通常会缓冲fread()/fwrite()。但是,这取决于你在做什么,它不应该有什么意义,嗯?您是说在不同的时间从不同的计算机读取/写入设备吗?或者您正在尝试使用虚拟机从多个操作系统同时访问设备?