#include #define N 10
typedef struct student
{
int sno;
char sname[15];
}STU;
typedef struct msgbuf
{
long mtype;
STU stu[N];
}MSGBUF;
main(int argc, char* argv[])
{
int i = 0;
MSGBUF mbf = {0};
mbf.mtype = 1;
int MSQID ;
errno = 0;
char *name = "./msgaaa";
key_t key = ftok(name,0);
MSQID = msgget(key, IPC_CREAT);
while(i < N)
{
mbf.stu[i].sno = i;
strcpy(mbf.stu[i].sname, "hello");
if (i == 1)
{
memset(mbf.stu[i].sname, 0, strlen(mbf.stu[i].sname));
strcpy(mbf.stu[i].sname, "aaa");
}
if (i == N-1)
{
memset(mbf.stu[i].sname, 0, strlen(mbf.stu[i].sname));
strcpy(mbf.stu[i].sname, "end");
}
// printf("------- %s ------", mbf.stu[i].sname);
msgsnd(MSQID, &mbf.stu[i], sizeof(mbf.stu[i]), 0);
if (-1 == errno)
{
perror("msgsnd");
exit(-1);
}
printf(" %d -- %s\n", mbf.stu[i].sno, mbf.stu[i].sname);
i++;
sleep(1);
}//while
msgctl(MSQID, IPC_RMID, NULL);
}
msgsnd 显示结果:
0 -- hello
1 -- aaa
2 -- hello
3 -- hello
4 -- hello
5 -- hello
6 -- hello
7 -- hello
8 -- hello
9 -- end
我知道了,可能是 不稳定信号的问题。信号丢失。。。