POSIX信号量加共享内存实现两个进程简单通信(一收一发)
要点
- 用了POSIX具名信号量,可以在进程间共享
- 用共享内存当做通信介质
- 信号量初始值为0,实现同步的功能,需要发送端写入信息后通知接收方接收。
- 其他细节在代码注释中
- POSIXSem_w.cpp为发送端代码,POSIXSem_r.cpp为接收端代码。
代码
-
POSIXSem_w.cpp
// 一个配合共享内存实现进程间同步的Posix信号量demo #define SHM_KEY 1111 #define SEM_NAME "/TestSem" #include <unistd.h> #include <sys/shm.h> #include <semaphore.h> #include <stdio.h> #include <fcntl.h> int main(){ // 打开一段共享内存。 int shm_id = shmget(SHM_KEY, sizeof(int), 0666 | IPC_CREAT); // 判断是否打开成功 if( shm_id < 0){ printf("fail to create share memory.\n")