동일한 파일을 매핑하는 메모리를 사용하여 서로 다른 두 프로세스가 통신하도록 허용하려고합니다. 그러나, 나는 이것에 약간의 문제가있다. 이것은 open() 호출을 사용하고 mmap에 파일 기술자를 전달하는 것과 관련이 있다고 생각합니다.파일 위로 mmap 사용
여기 내 코드는 무엇입니까?
개체 1의 코드 :
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);
나는 개체 1은 오직 한 번 할 것이기 때문 "w"파일 모드를 사용하고 나는 그것이 이전에 기존 데이터를 재설정 할 수 있습니다.
개체 2의 코드 :
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);
직면 한 정확한 문제는 무엇입니까? obj2가 obj1보다 먼저 파일에 액세스하지 않도록 할 수 있습니까? – dirkgently
예, obj1은 더 많은 서버이고 obj2는 나중에 시작될 클라이언트와 같습니다. – samoz