msgget & msgsnd
来源:互联网 发布:python编写界面 编辑:程序博客网 时间:2024/06/07 14:14
/*msg.c*/
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#define BUFSZ 512
/*消息缓冲区*/
struct message
{
long msg_type; //消息标识符
char msg_text[BUFSZ]; //消息,这个字段不但可以存储字符,还可以存储其他类型数据
};
int main()
{
int qid;
/*IPC关键字*/
key_t key;
int len;
struct message msg;
/*产生IPC关键字,用当前目录*/
if((key=ftok(".",'a'))==-1)
{
perror("ftok");
exit(1);
}
/*创建一个新的消息队列,返回消息队列标识符*/
if((qid=msgget(key,IPC_CREAT|0666))==-1)
{
perror("msgget");
exit(1);
}
printf("opened queue %d\n",qid);
puts("Please enter the message to queue:");
/*用户输入消息,到msg.msg_text去*/
if((fgets(msg.msg_text,BUFSZ,stdin))==NULL)
{
puts("no message");
exit(1);
}
/*消息标识符*/
msg.msg_type = getpid();
len = strlen(msg.msg_text);
/*发送消息*/
if((msgsnd(qid,&msg,len,0))<0)
{
perror("message posted");
exit(1);
}
/*从消息队列读出消息,到msg*/
if(msgrcv(qid,&msg,BUFSZ,0,0)<0)
{
perror("msgrcv");
exit(1);
}
printf("message is:%s\n",(&msg)->msg_text);
/*消息队列控制,这里删除消息队列*/
if((msgctl(qid,IPC_RMID,NULL))<0)
{
perror("msgctl");
exit(1);
}
exit(0);
}
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#define BUFSZ 512
/*消息缓冲区*/
struct message
{
long msg_type; //消息标识符
char msg_text[BUFSZ]; //消息,这个字段不但可以存储字符,还可以存储其他类型数据
};
int main()
{
int qid;
/*IPC关键字*/
key_t key;
int len;
struct message msg;
/*产生IPC关键字,用当前目录*/
if((key=ftok(".",'a'))==-1)
{
perror("ftok");
exit(1);
}
/*创建一个新的消息队列,返回消息队列标识符*/
if((qid=msgget(key,IPC_CREAT|0666))==-1)
{
perror("msgget");
exit(1);
}
printf("opened queue %d\n",qid);
puts("Please enter the message to queue:");
/*用户输入消息,到msg.msg_text去*/
if((fgets(msg.msg_text,BUFSZ,stdin))==NULL)
{
puts("no message");
exit(1);
}
/*消息标识符*/
msg.msg_type = getpid();
len = strlen(msg.msg_text);
/*发送消息*/
if((msgsnd(qid,&msg,len,0))<0)
{
perror("message posted");
exit(1);
}
/*从消息队列读出消息,到msg*/
if(msgrcv(qid,&msg,BUFSZ,0,0)<0)
{
perror("msgrcv");
exit(1);
}
printf("message is:%s\n",(&msg)->msg_text);
/*消息队列控制,这里删除消息队列*/
if((msgctl(qid,IPC_RMID,NULL))<0)
{
perror("msgctl");
exit(1);
}
exit(0);
}
- msgget & msgsnd
- 消息:ftok(), msgget(), msgsnd(),msgrcv(),msgctl()
- 消息队列函数(msgget、msgctl、msgsnd、msgrcv)
- 消息队列函数(msgget、msgctl、msgsnd、msgrcv)
- (转)linux消息队列函数 msgget,msgsnd, msgrcv, ftok()
- 消息队列函数(msgget、msgctl、msgsnd、msgrcv)及其范例
- linux消息队列函数msgget,msgsnd,_msgrcv,_ftok()
- 消息队列函数(msgget、msgctl、msgsnd、msgrcv)及其范例
- 消息队列函数(msgget、msgctl、msgsnd、msgrcv)及其范例 .
- 消息队列函数(msgget、msgctl、msgsnd、msgrcv)及其范例
- 消息队列函数(msgget、msgctl、msgsnd、msgrcv)及其范例
- linux消息队列函数msgget,msgsnd, msgrcv, ftok()
- 消息队列函数(msgget、msgctl、msgsnd、msgrcv)及其范例
- 消息队列函数(msgget、msgctl、msgsnd、msgrcv)及其范例
- 消息队列函数(msgget、msgctl、msgsnd、msgrcv)及其范例
- 消息队列函数(msgget、msgctl、msgsnd、msgrcv)及其范例
- linux ----消息队列(ftok,msgget,msgsnd,msgrcv,msgctl)
- 消息队列函数(msgget、msgctl、msgsnd、msgrcv)及其范例
- Output Formats
- find -exec -ok 的用法 -mtime
- crtdbg.h: No such file or directory
- C long2a
- Node, Edge and Graph Attributes
- msgget & msgsnd
- 多线程初步
- 跟我一起写 Makefile
- Javascript --RegExp
- Spring AOP—2、Spring中的AOP能为我们做些什么
- Windows快捷键及应用技巧
- 游戏程序员养成计划 (更新2010.11.6)
- 线程总结
- XML学习笔记