plock 서브루틴
용도
메모리에서 프로세스, 텍스트 또는 데이터를 잠급니다.
라이브러리
표준 C 라이브러리(libc.a)
구문
#include <sys/lock.h> int plock ( Operation)
int Operation;
int Operation;
설명
Plock 서브루틴을 사용하면 호출 프로세스가 텍스트 영역(텍스트 잠금), 데이터 영역(데이터 잠금) 또는 텍스트와 데이터 영역을 모두 메모리에 잠그거나 잠금 해제(프로세스 잠금)할 수 있습니다. Plock 서브루틴은 공유 텍스트 세그먼트나 공유 데이터 세그먼트를 잠그지 않습니다. 잠긴 세그먼트는 메모리에 고정되며 모든 루틴 페이징에 영향을 받지 않습니다. 부모 프로세스에 의해 잠긴 메모리는 포크 서브루틴 호출 후 자식 프로세스에 의해 상속되지 않습니다. 마찬가지로 프로세스가 실행 서브루틴 중 하나를 실행하면 잠긴 메모리가 잠금 해제됩니다. 이 서브루틴을 사용하려면 호출 프로세스에 루트 사용자 권한이 있어야 합니다.
실시간 프로세스는 이 서브루틴을 사용하여 해당 코드, 데이터 및 스택이 항상 메모리에 상주하는지 확인할 수 있습니다.
참고: plock 서브루틴을 호출하기 전에 사용자 애플리케이션은 ulimit 서브루틴을 사용하여 최대 스택 제한 값을 낮춰야 합니다.
매개변수
| 항목 | 설명 |
|---|---|
| 운영 | 다음 중 하나를 지정하십시오:
|
리턴 값
성공적으로 완료되면 0값이 호출 프로세스로 리턴됩니다. 그렇지 않으면 -1 값이 반환되고 errno 전역 변수가 오류를 나타내도록 설정됩니다.
오류 코드
다음 중 하나 이상에 해당하면 plock 서브루틴은 실패합니다:
| 항목 | 설명 |
|---|---|
| EPERM | 호출 프로세스의 유효 사용자 ID에 루트 사용자 권한이 없습니다. |
| EINVAL | Operation 매개변수에는 PROCLOCK, TXTLOCK, DATLOCK 또는 UNLOCK 이외의 값이 있습니다. |
| EINVAL | Operation 매개변수는 PROCLOCK과 같으며 호출 프로세스에 프로세스 잠금, 텍스트 잠금 또는 데이터 잠금이 이미 존재합니다. |
| EINVAL | Operation 매개변수는 TXTLOCK과 같으며 호출 프로세스에 텍스트 잠금 또는 프로세스 잠금이 이미 존재합니다. |
| EINVAL | Operation 매개변수는 DATLOCK과 같으며 호출 프로세스에 데이터 잠금 또는 프로세스 잠금이 이미 존재합니다. |
| EINVAL | Operation 매개변수는 UNLOCK과 같으며 호출 프로세스에 잠금 유형이 존재하지 않습니다. |