msgrcv.c 内容如凳歼下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <fcntl.h>
#include <sys/mman.h>
#include <errno.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#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内容如下:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <码粗橡sys/types.h>
#include <fcntl.h>
#include <sys/mman.h>
#include <errno.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)