msg消息隊列,實線不同進程之間的通信,主要依靠key來識別:
發送端
1
#include <stdio.h>
2
#include <stdlib.h>
3
#include <
string
.h>
4
#include <sys/types.h>
5
#include <sys/msg.h>
6
#include <unistd.h>
7
#include <time.h>
8
#include <sys/ipc.h>
9
struct
msgmbuf{
10
int
mtype;
11
char
mtext[
40
];
12
};
13
14
int
main()
15
{
16
int
ret = -
1
;
17
int
msg_flags,msg_id;
18
key_t key;
19
struct
msqid_ds msg_info;
20
struct
msgmbuf msg_mbuf;
21
key =
1024
;
22
msg_flags =
IPC_CREAT;
23
24
while
(
1
)
25
{
26
msg_id = msgget(key,msg_flags|
0666
);
27
if
(-
1
==
msg_id)
28
{
29
printf(
"
create message failed!\n
"
);
30
return
0
;
31
}
32
printf(
"
Input message to send:
"
);
33
scanf(
"
%s
"
,msg_mbuf.mtext);
34
getchar();
35
msg_mbuf.mtype =
10
;
36
ret = msgsnd(msg_id,&msg_mbuf,
sizeof
(
struct
msgmbuf),
0
);
37
if
(-
1
==
ret)
38
{
39
printf(
"
send message failed!\n
"
);
40
}
41
42
}
43
return
0
;
44
}
接收端:
1
#include <stdio.h>
2
#include <stdlib.h>
3
#include <
string
.h>
4
#include <sys/types.h>
5
#include <sys/msg.h>
6
#include <unistd.h>
7
#include <time.h>
8
#include <sys/ipc.h>
9
struct
msgmbuf{
10
int
mtype;
11
char
mtext[
40
];
12
};
13
14
int
main()
15
{
16
int
ret = -
1
;
17
int
msg_flags,msg_id;
18
key_t key;
19
struct
msgmbuf msg_mbuf;
20
key =
1024
;
21
msg_flags =
IPC_CREAT;
22
while
(
1
)
23
{
24
msg_id = msgget(key,msg_flags|
0666
);
25
if
(-
1
==
msg_id)
26
{
27
printf(
"
create message failed!\n
"
);
28
return
0
;
29
}
30
31
ret = msgrcv(msg_id,&msg_mbuf,
sizeof
(
struct
msgmbuf),
0
,
0
);
32
if
(-
1
==
ret)
33
{
34
printf(
"
receive message failed!\n
"
);
35
}
36
else
37
{
38
printf(
"
receive message successful!message[%s]\n
"
,msg_mbuf.mtext);
39
}
40
41
}
42
return
0
;
43
}
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

