2011-01-29 2 views
3

단일 응용 프로그램/사용자 만 액세스 할 수있는 Windows 및 Linux (모노 액세스 용)의 디렉토리를 잠글 수 있습니까?하나의 appdomain 만 액세스 할 수 있도록 디렉토리를 잠글 수 있습니다.

암호화 된 XML 메시지를 디렉토리에 작성해야하지만 삭제하려는 사람은 필요하지 않습니다. 나는 Mono를 리눅스에서 사용하는 것이 더 쉽다고 생각한다.

가능한 경우, 쓰기를 시작하기 전에 잠글 수 있는지 확인하기 위해 사용할 클래스는 무엇입니까?

감사합니다.

답변

0

디렉토리가 NTFS 파일 시스템에 있다고 가정하면 here으로 설명 된 NTFS 또는 here으로 표시된 Mono의 원시 syscall을 사용할 수 있습니다. 까다로운 점은 각 AppDomain의 코드가 자체 사용자로서 실행되어야한다는 것입니다.

사용자가 파일을 수동으로 삭제할 수 없도록 파일 시스템에서 지원하는 권한 부여 시스템을 사용하여 상위 디렉토리를 잠그는 것이 더 간단하다고 생각 하겠지만 응용 프로그램 사용자는 파일을 만들고 읽을 수 있습니다. 프로그램 논리는 AppDomain이 다른 파일을 밟을 수 없도록합니다.

동기화를 찾으려는 경우 (동일한 파일에 동시에 액세스하는 다중 스레드를 원하지 않음), 중앙 레지스트리 (데이터베이스 테이블 또는 다른 트랜잭션 저장소)를 사용하여 누가 무엇에 글을 쓰고 있는지 추적하십시오.

+0

순간 나는 작가와 독자 간의 동기화를 위해 sqlite3 db를 사용하고 있지만 그렇게 빠르지는 않습니다. 클래스에 대해 혼란스럽게하는 디렉토리 권한을 설정하는 것이 더 쉬울 것이라는 말입니까? 더 단순한 것이 더 낫습니다. –

+0

할 수있는 일이 많지만 실제 문제가 무엇인지에 달려 있습니다. 여러 개의 AppDomain 사이에서 '스크래치'공간으로 디렉토리를 사용하고 있다고 가정하면 'key'파일을 표준 이름으로 만들고 (독점적 인 잠금을 유지할 수 있습니다.) 모든 AppDomains가 다른 파일에 액세스하기 전에 해당 파일에 단독 잠금을 설정하십시오. 더 많은 정보를 얻으면 나는 더 나은 대답을 줄 수있었습니다. –

관련 문제