I'm trying to allow two different processes to communicate by using memory mapping the same file. However, I'm having some problems with this. I have a feeling this has to do with the way I'm using the open() call and passing my file descriptor to mmap.
Here is my code, can you see anything wrong with it?
Object 1's code:
16 FILE* temp = fopen(theSharedFileName, "w"); 17 fseek(temp, fileSize-1, SEEK_SET); 18 fprintf(temp, "0"); // make the file a certain size 19 fseek(temp, 0, SEEK_CUR); 20 21 int sharedFileName = fileno(temp); ... 31 sharedArea = (MyStruct*)mmap(0, fileSize, 32 PROT_READ | PROT_WRITE | PROT_EXEC, MAP_SHARED, sharedFileName, 0);
I use the "w" file mode since Object 1 will only ever be made once and I want it to reset any previously existing data.
Object 2's Code:
130 FILE* tempFile = fopen(sharedFileName, "a"); 131 int theFile = fileno(tempFile); ... 135 sharedArea = (MyStruct*)mmap(NULL, fileSize, 136 PROT_READ | PROT_WRITE | PROT_EXEC, MAP_SHARED, theFile, 0);