Manpages

이 름

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

즉 시 메 세 지 큐 를 제 거 하 며 해 당 데 이 터 구 조 체 는 기 다 리 고 있 는 모 든 읽 기 쓰 기 프 로 세 스 를 깨 운 다 .(에 러 를 반 환 하 며 , errnoEIDRM으 로 설 정 된 다 .) 호 출 프 로 세 스 의 유 효 사 용 자 ID는 슈 퍼 유 자 나 생 성 자 또 는 메 세 지 큐 의 소 유 자 중 하 나 여 야 한 다 .

반 환 값

성 공 시 , 반 환 값 0이 며 , 그 렇 지 않 으 면 에 러 를 가 리 키 는 errno 과 함 께 −1 이 반 환 된 다 .

에 러

실 패 가 반 환 될 때 , errno는 다 음 값 중 하 나 로 설 정 된 다 .

EACCES

cmd 인 자 는 IPC_STAT와 같 지 만 호 출 프 로 세 스 는 메 세 지 큐 msqid에 대 한 읽 기 접 근 허 가 권 을 가 지 고 있 지 않 다 .

EFAULT

cmd 인 자 는 IPC_SETIPC_STAT 값 을 가 지 고 있 지 만 buf에 의 해 지 정 된 주 소 로 접 근 할 수 없 다 .

EIDRM

메 세 지 큐 가 제 거 되 었 다 .

EINVAL

유 효 하 지 않 은 cmdmsqid.

EPERM

cmd 인 자 는 IPC_SETIPC_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 [AT] soback.net>, 2000년 6월 19일