내가 문제로 실행하고 ++ 응용 프로그램이를 CentOS 5에서 실행 :NFS 탑재 디스크를 다른 컴퓨터에서 업데이트 한 현재 상태와 강제로 동기화하려면 어떻게합니까? 내 C에 다음과 같이
/nfs/mounted/drive/path/directory/file
내 응용 프로그램의 이름 변경 : 시스템 A에
가 NFS 파일이 포함되어 시스템 C에서 드라이브를 장착있다 시스템 A에서 디렉토리 :
mv /nfs/mounted/drive/path/directory /nfs/mounted/drive/path/directory.old
먼저 파일의 존재 여부를 확인하는 것으로 시작 내가 만든 응용 프로그램을 실행하는 기계 B에 이상 컴퓨터에서 응용 프로그램 다음 SSH (들) :
/nfs/mounted/drive/path/directory/file
파일이 존재하는 것으로 발견되는 파일이 존재하지만이라면 기기 B는 계속해서 때 실패로하고, 따라서 시스템 B로 진행한다 (이는 경쟁 상태 기계 B는 여전히 구 상태보고된다) 파일을 열어서 실제로 존재하지 않습니다.
파일을 검사하기 전에 컴퓨터 B에서 응용 프로그램에 sync()
을 호출하여이 문제를 해결하려고했습니다. 나는 또한 echo 2 > /proc/sys/vm/drop_caches
일을 시도했지만 이들 중 어느 것도 즉시 사라지는중인 파일의 현재 상태를 볼 수있는 컴퓨터 B에서 내 응용 프로그램을 일으켰습니다.
데이터를 최신 상태로 유지하기 위해 파일을 검사하기 전에 컴퓨터 B의 C++ 응용 프로그램에서 수행 할 수있는 작업은 무엇입니까? 문제의 파일을 열어 명시 적으로 테스트하고 싶지는 않지만 대신 디스크를 현재 상태로 만들고 싶습니다. C++에서 상대적으로 빠른 방식으로이 강제 동기화를 수행하고 싶습니다. 약 2 분의 1 경과 시간이 소요됩니다.