当前位置:首页 > 进程通信 实验
/*message buffer for msgsnd and msgrcv calls*/
struct msgbuf{
long mtype; //消息类型,由用户决定
char mtext[MAXMSG];//消息正文 };
5、在程序修改之前存在一个bug,就是在输入的字符串中不能存在空格或制表符,如果出现空格或者制表符,将只会显示空格或者制表符后面的内容,前面的不显示。这是由于scanf()函数的作用,当他遇到空格或制表符时,就会只读入后面的内容。有人想到会用gets()来接受一行,但是懂C的人基本上都知道gets()是一个很危险的函数,而且很难控制,特别是与scanf()交替使用时前者的劣势更是一览无余,所以gets()一般是不推荐用的。那么我们可以用%[^\\n]%*c控制语句来隔离掉其中的空格或者制表符对读入一行字符串的影响。 3.2 测试说明
4 程序清单
/*进程通信之消息队列与共享存储区*/
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define MAXMSG 128
//消息队列的最大长度 #define BUFSIZE 128 //缓冲区的最大长度
/*定义消息的数据结构*/
struct my_msg{
long int mtype; //消息类型
char mtext[MAXMSG]; //消息内容
}msg;
int pid,pid1,pid2;//定义父进程和两个子进程的id标识
int i,j;
char buffer[BUFSIZE],msgtext[MAXMSG]; //定义缓冲区和接受暂存字符数组
共分享92篇相关文档