/* 리눅스의 메시지큐 정보 구조체입니다. */
struct msqid_ds
{
struct ipc_perm msg_perm; /* structure describing operation permission */
__time_t msg_stime; /* time of last msgsnd command */
unsigned long int __unused1;
__time_t msg_rtime; /* time of last msgrcv command */
unsigned long int __unused2;
__time_t msg_ctime; /* time of last change */
unsigned long int __unused3;
unsigned long int __msg_cbytes; /* 현재 메시큐에 들어있는 메시지 byte사이즈입니다. */
msgqnum_t msg_qnum; /* 현재 메시큐에 들어있는 메시지 갯수입니다. */
msglen_t msg_qbytes; /* max number of bytes allowed on queue */
__pid_t msg_lspid; /* pid of last msgsnd() */
__pid_t msg_lrpid; /* pid of last msgrcv() */
unsigned long int __unused4;
unsigned long int __unused5;
};
아래와 같이 코딩하시면 현재 메시지큐의 메시지 갯수를 알아낼 수 있습니다.
---------------------------------------------------------------------
struct msqid_ds tmpbuf;
메시지큐 메시지(데이타) 갯수 알아내는 방법.
/* 리눅스의 메시지큐 정보 구조체입니다. */
struct msqid_ds
{
struct ipc_perm msg_perm; /* structure describing operation permission */
__time_t msg_stime; /* time of last msgsnd command */
unsigned long int __unused1;
__time_t msg_rtime; /* time of last msgrcv command */
unsigned long int __unused2;
__time_t msg_ctime; /* time of last change */
unsigned long int __unused3;
unsigned long int __msg_cbytes; /* 현재 메시큐에 들어있는 메시지 byte사이즈입니다. */
msgqnum_t msg_qnum; /* 현재 메시큐에 들어있는 메시지 갯수입니다. */
msglen_t msg_qbytes; /* max number of bytes allowed on queue */
__pid_t msg_lspid; /* pid of last msgsnd() */
__pid_t msg_lrpid; /* pid of last msgrcv() */
unsigned long int __unused4;
unsigned long int __unused5;
};
아래와 같이 코딩하시면 현재 메시지큐의 메시지 갯수를 알아낼 수 있습니다.
---------------------------------------------------------------------
struct msqid_ds tmpbuf;
if( msgctl( qid, IPC_SET, &tmpbuf) == -1)
{
return(-1);
}
printf("메시지 갯수 : %d\n", tmpbuf.msg_qnum);
----------------------------------------------------------------------
직접 실행해 보지는 않았지만 이런식으로 하면됩니다.
ipcs 에서 나오는
ipcs 에서 나오는 메시지 개수를 말하는 건가요?
-----
오늘 나의 취미는 끝없는, 끝없는 인내다. 1973 法頂
-----
오늘 나의 취미는 끝없는, 끝없는 인내다. 1973 法頂
메시지 개수는
안녕하세요.
윗분처럼 ipcs에서 나오는 갯수를 system call로 알고 싶으신 거라면 msgctl을 사용하시면 됩니다.
그럼 즐거운 하루 되세요. 이만...
msgctl 함수를 써서..
msgctl 함수를 써서.. IPC_STAT를 인자로 주면 얻어오는 struct msqid_ds 구조체의 msg_qnum 필드가 원하시는 정보가 아닌가 싶습니다.
자세한 것은 man msgctl 해보세요.
노루가 사냥꾼의 손에서 벗어나는 것 같이, 새가 그물치는 자의 손에서 벗어나는 것 같이 스스로 구원하라 -잠언 6:5
댓글 달기