이것은 Ubuntu Online, Fedora Online, Windows 온라인 에뮬레이터 또는 MAC OS 온라인 에뮬레이터와 같은 여러 무료 온라인 워크스테이션 중 하나를 사용하여 OnWorks 무료 호스팅 공급자에서 실행할 수 있는 with-lock-ex 명령입니다.
프로그램:
이름
with-lock-ex - 파일 보관함
개요
잠금 해제 -w|-q|-f 잠금 파일 명령 인수 ...
기술
with-lock-ex는 쓰기를 위해 잠금 파일을 열고 잠근 다음 나머지를 공급합니다.
에 대한 그 주장 임원(2); 해당 프로세스가 종료되면 fd가 닫히고 파일이
커널에 의해 자동으로 잠금 해제됩니다.
파일이 존재하지 않으면 권한이 있는 파일이 생성됩니다. rw 각 사용자 클래스에 대해
umask가 가지고 있는 w.
옵션
-w 잠금을 사용할 수 있을 때까지 기다립니다.
-f 잠금을 획득할 수 없는 경우 실패(stderr에 메시지를 인쇄하고 255 종료)
다른 프로세스가 가지고 있기 때문에 즉시.
-q 아무 것도 하지 않음(즉, 지정된 프로세스를 실행하는 대신 0 종료)
다른 프로세스에 잠금이 있기 때문에 즉시 잠금을 획득할 수 없습니다.
탁한 자물쇠
사용된 잠금 프로토콜은 오래된 잠금을 겪지 않습니다. 잠금을 할 수 없는 경우
획득한 경우 하나 이상의 실행 중인 프로세스가 현재 잠금을 유지해야 합니다. 자물쇠가 필요한 경우
이러한 프로세스는 종료되어야 합니다.
어떤 경우에도 '오래된 잠금 클리너' 크론 작업 등을 시작해서는 안 됩니다.
많은 잠금이 존재할 수 있는 시스템에서 오래된 잠금 파일은 cron에서 제거될 수 있지만
예를 들어 잠금 파일이 제거되기 전에 각 잠금이 획득된 경우에만
잠금 해제 -q 잠금 파일 rm 잠금 파일
데드락
교착 상태 감지가 없습니다. 여러 개의 잠금이 있는 시스템에서 잠금 계층 구조는 다음과 같아야 합니다.
모든 자물쇠 쌍에 대해 A 과 B 어떤 프로세스가 잠길 수 있는지
동시에, 또는 A>B or B>A 여기서 관계 >는 전이적이고 비순환적입니다.
그런 다음 두 개의 잠금 장치에 대해 X 과 Y 과 X>Y 취득하는 것은 금지되어 있습니다 X 들고 있는 동안 Y.
대신 획득 X 먼저 또는 릴리스 Y (재)획득하기 전에 X 과 Y 그와 같은 순서로.
(교착 상태를 피하는 더 복잡한 방법이 있지만 잠금 계층 구조는 간단합니다.
이해하고 시행합니다. 요구 사항에 맞지 않으면 문헌을 참조하십시오.)
잠금 실험 계획안
에서 사용하는 잠금 프로토콜 잠금 해제 다음과 같습니다 :
잠금은 fcntl 독점 잠금을 보유하는 프로세스(또는 프로세스 그룹)에 의해 보유됩니다.
지정된 이름을 가진 일반 파일의 첫 번째 바이트. 자물쇠의 홀더
(그리고 잠금 보유자만) 파일을 삭제하거나 이름이 있는 inode를 변경할 수 있습니다.
참조하고 그렇게 하는 즉시 잠금을 유지하는 것을 멈춥니다.
파일이 존재하지 않는 경우 모든 프로세스에서 파일을 생성할 수 있습니다. 파일이 필요하지 않습니다
실제 데이터를 포함합니다. 실제로 데이터 저장을 위해 파일을 사용하는 것은
신뢰할 수 있는 업데이트를 위한 대부분의 전략이 금지되므로 권장하지 않습니다. 사용
대신 별도의 잠금 파일.
잠금을 얻는 능력은 파일에 대한 쓰기 권한에 해당합니다(물론
파일이 아직 존재하지 않는 경우 파일을 생성할 수 있는 권한). 그러나
파일에 대한 읽기 권한만 잠금이 획득되는 것을 방지할 수 있습니다. 그러므로
잠금 파일은 일반적으로 세계에서 읽을 수 없어야 합니다.
(그룹) 프로세스가 잠금을 얻으려면 파일을 열어야 합니다.
O_CREATE)로 잠그십시오. fcntl(2) F_RWLCK, 작업 F_SETLK or F_SETLKW. 이 경우
성공하면 파일 설명자를 fstat해야 하고 경로별로 파일을 지정해야 합니다. 만약
장치와 inode가 일치하면 잠금이 획득되고 그 때까지 획득된 상태로 유지됩니다.
프로세스 그룹은 이름이 참조하는 파일을 변경하거나 파일을 삭제하거나 릴리스합니다.
fcntl 잠금. 그렇지 않으면 다른 프로세스가 잠금을 획득하고 삭제했습니다.
그 동안 파일; 이제 파일 설명자를 닫고 다시 시작해야 합니다. 잠금 장치
ex 이 사양을 따릅니다.
참고 대군(2) 다른 종류의 잠금 fcntl(2). 잠금 해제 사용 fcntl.
onworks.net 서비스를 사용하여 with-lock-ex 온라인 사용