Q: fwrite() and fread() of a shared FAT32 formatted file is taking long time in MAC osx Lion C program
Hi
Is there any provision or api in MAC to open a file in shared mode same as windows
hUSBdrive = CreateFile(pDriveName, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_FLAG_NO_BUFFERING, NULL);
we have the follwing scenario where a file is shared among two processes for read/write.one is running on Linux and the other one is running on MAC.where both the processses are reading/writing into the same memory location in the file say "X"
- FAT 32 formatted raw data file which is located on the device, is shared among two processes.
- One process is running on Linux device which is connected to MAC book through usb.In this linux process, the file is opened using fopen() and we have used fcntl() with O_DIRECT flag.This process continuously reads/writes data on memory location "X" in the shared file .
- The other process is running on Mac which has simple c program that opens the file on the connected device i.e from usb drive and reads/writes data using fread()/fwrite().fopen() is used to open the file and FILE_NOCACHE flag is used to avoid caching.
- The value at memory location "X" is updated by mac by using fwrite() and the linux process reads the memory location "X" by using fread(). Linux process is taking around 30 sec to get the updated value.
- If the value is updated by Linux process at memory location "X" by using fwrite() the MAC process is also taking long time more than a minute to read the updated value by usng fread().
fwrite()/fread() on mac is taking long time where as the windows application which uses the same apis is taking msec time.
Do we need to use other api s or flags to open file?
thanks in advance.......
MacBook Pro, Mac OS X (10.7.4)
Posted on Jul 5, 2012 5:58 AM