当前位置: 技术问答>linux和unix
关于消息队列!
来源: 互联网 发布时间:2016-04-18
本文导语: #include #include #include #include #include #include #include #include char *GetFileMode(mode_t st_mode,char *resp) { memset(resp,'-',10); if(st_mode & S_IRUSR)resp[0]='r'; if(st_mode & S_IXUSR)resp[2]='x'; if(st_mode & S_IWUSR)resp[1...
#include
#include
#include
#include
#include
#include
#include
#include
char *GetFileMode(mode_t st_mode,char *resp)
{
memset(resp,'-',10);
if(st_mode & S_IRUSR)resp[0]='r';
if(st_mode & S_IXUSR)resp[2]='x';
if(st_mode & S_IWUSR)resp[1]='w';
if(st_mode & S_IRGRP)resp[3]='r';
if(st_mode & S_IWGRP)resp[4]='w';
if(st_mode & S_IXGRP)resp[5]='x';
if(st_mode & S_IROTH)resp[6]='r';
if(st_mode & S_IWOTH)resp[7]='w';
if(st_mode & S_IXOTH)resp[8]='x';
resp[9]=0;
return resp;
}
int StartMsg(int msgid)
{
char resp[10];
struct msqid_ds buf;
memset(&buf,0,sizeof(buf));
msgctl(msgid,IPC_STAT,&buf);
fprintf(stderr,"T D MODE OWNER GROUP CBYTES QNUM QBYTESn");
fprintf(stderr,"q %6d %#10.8x %10s %10d %10d %10d %10d %10dn",
msgid,
buf.msg_perm.key, //提示 没有key@
GetFileMode(buf.msg_perm.mode,resp),
buf.msg_perm.uid,
buf.msg_perm.gid,
buf.msg_cbytes,
buf.msg_qnum,
buf.msg_qbytes);
return 0;
}
int main(int argc,char *argv[])
{
int msgid;
if(argc!=2&&argc!=3)return -1;
msgid=atoi(argv[1]);
if(argc==2)
{
StartMsg(msgid);
}
else if(argc==3&&strcmp(argv[2],"c")==0)
{
if(msgget(msgid,0666|IPC_CREAT|IPC_EXCL)
#include
#include
#include
#include
#include
#include
#include
char *GetFileMode(mode_t st_mode,char *resp)
{
memset(resp,'-',10);
if(st_mode & S_IRUSR)resp[0]='r';
if(st_mode & S_IXUSR)resp[2]='x';
if(st_mode & S_IWUSR)resp[1]='w';
if(st_mode & S_IRGRP)resp[3]='r';
if(st_mode & S_IWGRP)resp[4]='w';
if(st_mode & S_IXGRP)resp[5]='x';
if(st_mode & S_IROTH)resp[6]='r';
if(st_mode & S_IWOTH)resp[7]='w';
if(st_mode & S_IXOTH)resp[8]='x';
resp[9]=0;
return resp;
}
int StartMsg(int msgid)
{
char resp[10];
struct msqid_ds buf;
memset(&buf,0,sizeof(buf));
msgctl(msgid,IPC_STAT,&buf);
fprintf(stderr,"T D MODE OWNER GROUP CBYTES QNUM QBYTESn");
fprintf(stderr,"q %6d %#10.8x %10s %10d %10d %10d %10d %10dn",
msgid,
buf.msg_perm.key, //提示 没有key@
GetFileMode(buf.msg_perm.mode,resp),
buf.msg_perm.uid,
buf.msg_perm.gid,
buf.msg_cbytes,
buf.msg_qnum,
buf.msg_qbytes);
return 0;
}
int main(int argc,char *argv[])
{
int msgid;
if(argc!=2&&argc!=3)return -1;
msgid=atoi(argv[1]);
if(argc==2)
{
StartMsg(msgid);
}
else if(argc==3&&strcmp(argv[2],"c")==0)
{
if(msgget(msgid,0666|IPC_CREAT|IPC_EXCL)