|
NAMEmsgctl —
message control operations
LIBRARYStandard C Library (libc, -lc)SYNOPSIS#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
int
DESCRIPTIONThemsgctl () system call performs some control
operations on the message queue specified by msqid.
Each message queue has a data structure associated with it, parts
of which may be altered by struct msqid_ds { struct ipc_perm msg_perm; /* msg queue permission bits */ msglen_t msg_cbytes; /* number of bytes in use on the queue */ msgqnum_t msg_qnum; /* number of msgs in the queue */ msglen_t msg_qbytes; /* max # of bytes on the queue */ pid_t msg_lspid; /* pid of last msgsnd() */ pid_t msg_lrpid; /* pid of last msgrcv() */ time_t msg_stime; /* time of last msgsnd() */ time_t msg_rtime; /* time of last msgrcv() */ time_t msg_ctime; /* time of last msgctl() */ }; The ipc_perm structure used inside the
msqid_ds structure is defined in
struct ipc_perm { uid_t cuid; /* creator user id */ gid_t cgid; /* creator group id */ uid_t uid; /* user id */ gid_t gid; /* group id */ mode_t mode; /* r/w permission */ unsigned short seq; /* sequence # (to generate unique ipcid) */ key_t key; /* user specified msg/sem/shm key */ }; The operation to be performed by
The permission to read from or write to a message queue (see msgsnd(2) and msgrcv(2)) is determined by the msg_perm.mode field in the same way as is done with files (see chmod(2)), but the effective uid can match either the msg_perm.cuid field or the msg_perm.uid field, and the effective gid can match either msg_perm.cgid or msg_perm.gid. RETURN VALUESThemsgctl () function returns the value 0 if
successful; otherwise the value -1 is returned and the global variable
errno is set to indicate the error.
ERRORSThemsgctl () function will fail if:
SEE ALSOmsgget(2), msgrcv(2), msgsnd(2)HISTORYMessage queues appeared in the first release of AT&T System V UNIX.
Visit the GSP FreeBSD Man Page Interface. |