Window API의
CreateFile의 dwShareMode처럼 다른 프로세스에서 파일 오픈 권한을 제한하도록 설정하는 방법은 없는지요?
fopen을 fclose를 진행하는동안 다른 프로세스에서 write 권한이나 동일한 파일명으로 create할수 없도록 하고 싶습니다.
O_EXCL
When used with O_CREAT, if the file already exists it is an error and the open() will fail. In this context, a symbolic link exists, regardless of where it points to. O_EXCL is broken on NFS file systems; programs which rely on it for performing locking tasks will contain a race condition. The solution for performing atomic file locking using a lockfile is to create a unique file on the same file system (e.g., incorporating hostname and pid), use link(2) to make a link to the lockfile. If link() returns 0, the lock is successful. Otherwise, use stat(2) on the unique file to check if its link count has increased to 2, in which case the lock is also successful.
내가 고칠 수 있는 프로그램들 이라면 전부 파일
내가 고칠 수 있는 프로그램들 이라면 전부 파일 락걸도록 수정하면 됩니다....만,
내가 쓰는 파일을 다른사람이 만든 프로그램이 못쓰도록 하는 것은 리눅스에서는 불가능합니다.
언제나 삽질 - http://tisphie.net/typo/
프로그래밍 언어 개발 - http://langdev.net
아..안습이네요
다른사람이 만든 프로그램에서도 오픈 권한을 제한해야 하는데.. 이런이런..
엥 제가 잘못 알고 있는건가요??? 일반적으로
일반적으로 운영체제에서 파일의 무결성을 어느정도 보장해주는데....
다른 프로세스랑 어떤식으로 겹치는걸 걱정하시는건가요????
아님 옵션을 물어보시는것인데 제가 잘못이해한건가요?
인생은 도박이다.
open 함수
다음과 같은 내용이 있습니다.
O_EXCL
When used with O_CREAT, if the file already exists it is an error and the open() will fail. In this context, a symbolic link exists, regardless of where it points to. O_EXCL is broken on NFS file systems; programs which rely on it for performing locking tasks will contain a race condition. The solution for performing atomic file locking using a lockfile is to create a unique file on the same file system (e.g., incorporating hostname and pid), use link(2) to make a link to the lockfile. If link() returns 0, the lock is successful. Otherwise, use stat(2) on the unique file to check if its link count has increased to 2, in which case the lock is also successful.
이것도 역시 자기가 열지 않을 뿐, 다른 프로세스가
이것도 역시 자기가 열지 않을 뿐, 다른 프로세스가 열지 않게 막아주지는 않습니다.
언제나 삽질 - http://tisphie.net/typo/
프로그래밍 언어 개발 - http://langdev.net
파일 락킹을 이용하는건 어떤가요? Advisory
파일 락킹을 이용하는건 어떤가요?
Advisory Lock이 아닌 Mandatory Lock을 이용하면 될 거 같은데요,
Mandatory Lock을 사용하려면 mount 옵션도 -o mand를 주고 마운트해야 된다고 하네요,
fcntl로 구현할 수 있는 것으로 알고 있습니다.
찾아보니 이런게 있긴 하네요
http://kldp.org/node/38032
댓글 달기