2009-12-03 7 views
0

특정 시간 범위 (추가 모드), fprintf, fclose 기능을 사용하여 두 프로세스가 동일한 파일에 여러 번 쓰도록해도 괜찮습니까? 그들은 데이터를 기다리고 열기, 쓰기, 닫기 작업을 반복합니다.두 프로세스 열기

데이터가 기록되지 않을 가능성이 있습니까?

답변

1

두 프로세스가 동일한 파일에 액세스하는 경우 Mutex을 사용하여 두 프로세스가 동시에 파일에 기록하지 못하게해야합니다.

위 링크는 Windows 플랫폼 용입니다. 다른 플랫폼의 경우에는 PTHREAD_PROCESS_SHARED으로 만든 pthreads 뮤텍스와 같이 플랫폼의 적절한 구조가 필요합니다.

+0

덕분에이 작업을 수행 할 수있는 기능이 있습니다. – Moony

1

fopen() 함수는 적어도 Win32/VC++에서 공유 보호 (SH_DENYNO)가없는 파일을 엽니 다. 따라서 어떤 종류의 잠금 프로토콜이 없으면 파일이 손상 될 수 있습니다.

앱이 Win32 인 경우 CreateFile API를 사용하여 공유 모드를 지정할 수 있습니다. _fsopen() 기능은 다소 휴대 성이 뛰어나지 만 휴대 성이 좋지 않습니다 (fopen()).

1

Windows가 아닌 경우 협력 프로세스 중 가장 쉬운 방법은 flock입니다. (fd에서 파일을 얻으려면 fdopen을 사용하십시오.)

관련 문제