訊息佇列實現兩個終端互動,模擬聊天

2021-09-22 21:31:30 字數 2180 閱讀 1448

終端1**如下,子程序傳送訊息,父程序接收訊息。

1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8

9 #define n 128

10 #define size sizeof(struct msgbuf) - sizeof(long)

11 #define type1 100

12 #define type2 200

13 14 struct msgbuf;

18 int main(int argc, const char *ar**)

19 26 /*建立或開啟訊息佇列*/

27 int msqid;

28 struct msgbuf msg_snd, msg_rcv;

29 if((msqid = msgget(key, ipc_creat|ipc_excl|0664)) < 0)

34 else

38 }

39 40 pid_t pid;

41 42 pid = fork();

43 44 if(pid < 0)

48 else if(pid == 0)

60 }

61 }

62 else

70 71 printf("msg_b:%s\n", msg_rcv.buf);

72 }

73 }

74 return 0;

75 err:

76 msgctl(msqid, ipc_rmid, null);

77 }

終端2 的**如下,同樣是子程序傳送訊息,父程序接收訊息。

1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8

9 #define n 128

10 #define size sizeof(struct msgbuf) - sizeof(long)

11 #define type1 100

12 #define type2 200

13 14 struct msgbuf;

18 int main(int argc, const char *ar**)

19 26 /*建立或開啟訊息佇列*/

27 int msqid;

28 struct msgbuf msg_snd, msg_rcv;

29 if((msqid = msgget(key, ipc_creat|ipc_excl|0664)) < 0)

34 else

38 }

39 40 pid_t pid;

41 42 pid = fork();

43 44 if(pid < 0)

48 else if(pid == 0)

60 }

61 }

62 else

70 printf("msg_a:%s\n", msg_rcv.buf);

71 }

72 }

73 return 0;

74 err:

75 msgctl(msqid, ipc_rmid, null);

76 }

執行結果如下,終端2執行msg_b.c輸入「hello」,則終端2輸出「hello」;終端1執行msg_a.c輸入「world」,則終端2輸出「world」;當在終端2 輸入「quit」時,程式全部退出,並且訊息佇列刪除。

msg_a.c

linux@master:~/1000phone/msg/msg$ ./msga

msg_b:hello

world

msg_b.c

linux@master:~/1000phone/msg/msg$ ./msgb

hello

msg_a:world

quit

已殺死

7 兩個棧模擬佇列,兩個佇列模擬棧

利用兩個棧模擬佇列 stack1,stack2 首先向stack1當中放入資料,如果需要輸出資料,從stack2中delete資料,如果stack2為空,就把stack1中資料匯入stack2 include static.h include include templateclass cquue ...

兩個棧模擬佇列

演算法導論上的課後題 兩個棧模擬佇列 這個原來做過 一般是這樣 我看網上大概都是這種解法 原來棧空 a b null null 1,2,3入站的時候入a a b 3 null 2 null 1 null 出戰的時候先進b 然後pop b 在調過來進a a b null 1 null 2 null 3...

兩個棧實現佇列 兩個佇列實現棧

1.兩個棧實現佇列 大致思路 入佇列時,將元素入棧s1,出佇列時,將s2中的元素出棧即可,如果s2為空,那麼將s1中 s1.size 1 個元素出棧,加入到s2中,然後將s1中最後乙個元素出棧,即完成了出佇列的操作 include using namespace std include includ...