MSGCTL
Section: 리눅스 프로그래머 매뉴얼 (2)
Updated: 1993년 11월 1일
Index
Return to Main Contents
이름
msgctl - 메세지 작동을 제어한다.
사용법
# include <sys/types.h>
# include <sys/ipc.h>
# include <sys/msg.h>
int msgctl ( int msqid,
int cmd,
struct msqid_ds *buf )
설명
이 함수는 식별자
msqid인
메세지 큐를
cmd
에 의해 지정된 작동으로 제어한다.
cmd
의 유효값은 다음과 같다:
- IPC_STAT
-
메세지 큐 데이터 구조를
buf에
의해 지정된 구조체로 복사한다.
사용자는 메세지 큐에 읽기 우선권을 가지고 있어야 한다.
- IPC_SET
-
buf가
가리키고 있는
msqid_ds
구조체의 일부 멤버 값을 메세지 큐 데이터 구조체에 쓰고
msg_ctime
멤버도 갱신한다.
사용자가 제공하고
buf가
가리키고 있는
struct msqid_ds
에서 고려되어야 할 멤버는 다음과 같다:
msg_perm.uid
msg_perm.gid
msg_perm.mode /* 하위 9-bits */
msg_qbytes
호출 프로세스의 유효(effective) user-ID는 슈퍼 유저나, 생성자 또는
메세지 큐의 소유자 중 하나여야 한다.
슈퍼 유저만이 시스템 파라미터인
MSGMNB값보다
크게
msg_qbytes를
올릴 수 있다.
- IPC_RMID
-
즉시 메세지 큐를 제거하며 해당 데이터 구조체는 기다리고 있는
모든 읽기 쓰기 프로세스를 깨운다.(에러를 반환하며,
errno는
EIDRM으로
설정된다.)
호출 프로세스의 유효 사용자 ID는 슈퍼 유자나 생성자 또는 메세지 큐의
소유자 중 하나여야 한다.
반환값
성공시, 반환값
0이며,
그렇지 않으면 에러를 가리키는
errno
과 함께
-1
이 반환된다.
에러
실패가 반환될때,
errno는
다음 값 중 하나로 설정된다.
- EACCES
-
cmd
인자는
IPC_STAT와
같지만 호출 프로세스는 메세지 큐
msqid에
대한 읽기 접근 허가권을 가지고 있지 않다.
- EFAULT
-
cmd
인자는
IPC_SET나
IPC_STAT
값을 가지고 있지만
buf에
의해 지정된 주소로 접근할 수 없다.
- EIDRM
-
메세지 큐가 제거 되었다.
- EINVAL
-
유효 하지 않은
cmd나
msqid.
- EPERM
-
cmd
인자는
IPC_SET나
IPC_RMID
값을 가지고 있지만 호출 프로세스의 유효 사용자 ID는 명령을
실행할 충분한 권한을 가지고 있지 않다.
이것은 또한 비 슈퍼-사용자 프로세스가 시스템 파라미터
MSGMNB에
의해 지정된 값보다 크게
msg_qbytes
값을 증가시키려고 시도하였을 때이다.
주의
IPC_INFO,
MSG_STAT
그리고
MSG_INFO는
할당된 자원에 대한 정보를 제공하는
ipcs(8)
프로그램에 의해 사용된다.
앞으로 이것은 proc 파일 시스템 인터페이스를 위해서 필요에 따라 수정되거나
이동될 수도 있다.
호환
SVr4, SVID. SVID는 EIDRM 에러 조건을 문서화 하지 않았다.
관련 항목
ipc(5),
msgget(2),
msgsnd(2),
msgrcv(2)
역자
정강훈 <skyeyes@soback.kornet.net>, 2000년 6월 19일
Index
- 이름
-
- 사용법
-
- 설명
-
- 반환값
-
- 에러
-
- 주의
-
- 호환
-
- 관련 항목
-
- 역자
-
This document was created by
man2html,
using the manual pages.
Time: 08:07:01 GMT, March 25, 2004