LinuxC 进程间通信的小栗子🌰
🌰在这里
1 | #include <stdio.h> #include <sys/types.h> #include <sys/ipc.h> #include <sys/msg.h> /** * 进程间通信 发送端 **/ int main() { int msgid; struct msg { long type; char data[20]; } don = { .type = 1L, .data = "Hello Msg", }; // 消息类型 //struct msg don; // 实例化 key_t key; key = ftok("/home" , 'i'); msgid = msgget(key, IPC_CREAT | 0666); msgsnd(msgid, &don, sizeof(don) - sizeof(long), 0); return 0; } |
1 | #include<stdio.h> #include<sys/types.h> #include<sys/ipc.h> #include<sys/msg.h> /** * 进程间通信 接收端 **/ int main() { int msgid; key_t key; struct msg { long type; char data[20]; }; struct msg don; // 实例化 虽然变量名一样,但互不干扰 key = ftok("/home",'i'); msgid = msgget(key, 0666); while(1) { msgrcv(msgid, &don, sizeof(don) - sizeof(long), 0, 0); printf("rcvbuf = %s\n", don.data); } return 0; } |