两个进程间用消息队列的 通信 高手帮帮忙 谢谢哈
1 #include <stdio.h>2 #include <string.h>
3 #include <stdlib.h>
4 #include <unistd.h>
5 #include <sys/types.h>
6 #include <sys/ipc.h>
7 #include <sys/msg.h>
8
9 typedef struct
10 {
11 long int mtype;
12 char mtext[50];
13 char name[20];
14 }MSG;
15
16 int main(int argc, char *argv[])
17 {
18 key_t key;
19 MSG msg;
20 MSG msgg;
21 int i=1;
22 int msgid;
23 int pid;
24 char buf[100];
25
26 key=ftok("/desktop/gcc1", 2012);
27 msgid=msgget(key, IPC_CREAT|0666);
28 if(msgid==-1)
29 {
30 perror("msgget");
31 exit(-1);
32 }
33
34 pid=fork();
35 if(pid<0)
36 {
37 perror("fork");
38 exit(1);
39 }
40 if(pid==0)
41 {
42 while(i)
43 {
44 msgrcv(msgid, &msg, 50, 10, 0);
45 printf("%s: ", msg.name);
46 fflush(stdout);
47 printf("%s\n", msg.mtext);
48 fflush(stdout);
49 if(strcmp(msg.mtext, "end")==0)
50 i=0;
51 }
52 msgctl(msgid, IPC_RMID, NULL);
53
54 }
55 if(pid>0)
56 {
57 strcpy(msgg.name, "lucy");
58 msgg.mtype=9;
59 while(i)
60 {
61 memset(buf, 0, sizeof(buf));
62 printf("%s: ", msgg.name);
63 fflush(stdout);
64 fgets(buf, 100, stdin);
65 strcpy(msgg.mtext, buf);
66 msgsnd(msgid, &msgg, 50, 0);
67 if(strcmp(msgg.mtext,"end")==0)
68 i=0;
69 }
70 }
71 return 0;
72 }
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <unistd.h>
4 #include <sys/types.h>
5 #include <sys/ipc.h>
6 #include <sys/msg.h>
7 #include <string.h>
8
9 typedef struct
10 {
11 long int mtype;
12 char mtext[50];
13 char name[20];
14 }MSG;
15
16 int main(int argc, char *argv[])
17 {
18 int msgid;
19 int pid;
20 int i=1;
21 key_t key;
22 MSG msg, msgg;
23 char buf[100];
24
25 key=ftok("/desktop/gcc1", 2012);
26 msgid=msgget(key, IPC_CREAT|0666);
27 if(msgid==-1)
28 {
29 perror("msgget");
30 exit(1);
31 }
32
33 pid=fork();
34 if(pid<0)
35 {
36 perror("fork");
37 exit(1);
38 }
39 if(pid==0)
40 {
41 while(i)
42 {
43 msgrcv(msgid, &msgg, 50, 9, 0);
44 printf("%s: ", msgg.name);
45 fflush(stdout);
46 printf("%s\n", msgg.mtext);
47 fflush(stdout);
48 if(strcmp(msgg.mtext, "end")==0)
49 i=0;
50 }
51 msgctl(msgid, IPC_RMID, NULL);
52 }
53 if(pid>0)
54 {
55 strcpy(msg.name, "peter");
56 msg.mtype=10;
57 while(i)
58 {
59 memset(buf, 0, sizeof(buf));
60 printf("%s: ", msg.name);
61 fflush(stdout);
62 fgets(buf, 100, stdin);
63 strcpy(msg.mtext, buf);
64 msgsnd(msgid, &msg, 50, 0);
65 if(strcmp(msg.mtext, "end")==0);
66 i=0;
67 }
68 }
69 return 0;
70
71 }
这两个程序是我写的两个进程间用消息队列的 通信 不过有点不对 找不出原因 希望高手帮帮忙 谢谢 1,1 Top