
S21: 进程间(IPC)通信
文章平均质量分 53
管道消息队列共享内存
静思心远
嵌入式&&人工智能
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
shmqueue共享内存队列
学习一下优秀的开源代码:main.cpp//// main.cpp// Demo//// Created by 杜国超 on 17/6/22.// Copyright © 2017年 杜国超. All rights reserved.//#include <iostream>#include <unistd.h>#include <thread>#include <atomic>#include <list>#i原创 2020-09-18 17:42:03 · 1559 阅读 · 0 评论 -
共享内存:shmget()一直失败,errno=-22
一般代码如下: key = 1234; m_nShmId = shmget(key, 1024, 0666|IPC_CREAT); if (m_nShmId == -1) { GH_LOG_ERROR("shmget() FAILED!"); return false; } 有人奇怪了,这语句是多么的正确,为什么一直错误呢?原因就是,这个key已经存在,而且转载 2020-08-27 16:39:00 · 3575 阅读 · 0 评论 -
shared_memory
初始版:#include <stdio.h>#include <stdlib.h>#include <sys/ipc.h>#include <sys/shm.h>#include <string.h>//./a.out .int main(int argc, const char *argv[]){ char *addr; int shm_id; key_t key; if((key = ftok(argv[1原创 2020-08-20 08:35:44 · 350 阅读 · 0 评论 -
Linux进程通信共享内存
共享内存效率最高,分析一下高在哪里:共享内存函数由shmget、shmat、shmdt、shmctl四个函数组成。下面的表格列出了这四个函数的函数原型及其具体说明。1. shmget函数原型shmget(得到一个共享内存标识符或创建一个共享内存对象)所需头文件#include #include 函数说明原创 2020-08-23 09:51:50 · 248 阅读 · 0 评论 -
消息队列msgqueue
消息发送与接受:msg_a.c#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/types.h>#include <sys/ipc.h>#include <sys/msg.h>#include <signal.h>#define MSG_TYPE_A 100#define MSG_TYPE_B 200ty原创 2020-08-20 08:36:25 · 582 阅读 · 0 评论 -
linux下消息队列初识
linux 系统下查看msg命令cat /proc/sys/kernel/msgmax:查看一条信息最大有多大cat /proc/sys/kernel/msgmnb:查看消息队列中信息最大有多大cat /proc/sys/kernel/msgmni:查看系统中消息队列最大有多大命令ipcs -q:查看消息队列命令ipcrm -Q消息队列名:删除消息队列comm...原创 2019-05-28 16:44:11 · 464 阅读 · 0 评论 -
消息队列(MQ)比较
消息队列比较1.消息队列(MQ)比较1.消息队列(MQ)比较1.MQ使用场景异步通信有些业务不想也不需要立即处理消息。消息队列提供了异步处理机制,允许用户把消息放入队列,但并不立即处理它。想在队列中放入多少消息就放多少,然后在需要的时候再去处理他。解耦降低工程间的强依赖程度,针对异构系统进行适配。在项目启动之初来预测将来项目会碰到什么需求,是极其困难的。通过消息系统在处理过程中间插入了一个隐含的、基于数据的接口层,两边的处理过程都要实现这一接口,当应用发生变化时,可以独立的扩展或修改两边的处理过转载 2021-02-23 23:33:48 · 1166 阅读 · 0 评论 -
有名管道FIFO
写:#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <errno.h>#include <string.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>//./a.out FIFOint main(int argc, const原创 2020-08-20 08:36:01 · 252 阅读 · 0 评论 -
Pipe
无名管道:#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <string.h>int read_pipe(int fd){ int n; char buf[1024]; while(1) { n = read(fd,buf,sizeof(buf) - 1); buf[n] = '\0'; printf("Read %d bytes: %原创 2020-08-18 23:18:14 · 234 阅读 · 0 评论 -
Linux IPC总结
IPC总结1.最初的Unix IPC1.1、信号(signal)1.2、管道(Pipe)2.System V IPC2.1 信号量(Semaphores)2.1、共享内存2.3、消息队列3.SocketPC进程间通信(Inter-Process Communication)就是指多个进程之间相互通信,交换信息的方法。Linux IPC基本上都是从Unix平台上继承而来的。主要包括最初的Unix IPC,System V IPC以及基于Socket的IPC。另外,Linux也支持POSIX IPC。Sys转载 2020-10-25 11:44:01 · 320 阅读 · 0 评论 -
Linux进程间通信
一、进程间通信概述进程通信有如下一些目的:A、数据传输:一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几M字节之间B、共享数据:多个进程想要操作共享数据,一个进程对共享数据的修改,别的进程应该立刻看到。C、通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)。D、资源共享:多个进程之间共享同样的资源。为了作原创 2016-09-21 08:24:14 · 446 阅读 · 0 评论 -
Signal
#include <stdio.h>#include <stdlib.h>#include <signal.h>void handler_signal(int signum){ printf("Recive signum : %d.\n",signum); return;}int main(int argc, const char *argv[]){ //设置进程对信号的处理方式 //1.忽略SIGINT信号 if(signal(SIG...原创 2020-08-20 08:35:14 · 337 阅读 · 0 评论 -
信号灯
write:#include <stdio.h>#include <stdlib.h>#include <sys/ipc.h>#include <sys/shm.h>#include <string.h>#include <signal.h>#include <sys/sem.h>union semun { int val; /* Value for SETVAL */ struct semid_原创 2020-08-20 08:37:03 · 227 阅读 · 0 评论 -
linux各种IPC机制
docker中的资源隔离,一种就是IPC的隔离。IPC是进程间通信。 下面的文章转载自https://blog.csdn.net/yyq_9623/article/details/78794775 原帖发表在IBM的developerworks网站上,是一个系列的文章,作者郑彦兴,通过讲解和例子演示了Linux中几种IPC的使用方式,我觉得很好,在这里做一个保留,能看完的话Linux IPC的基础是没有问题的了。 一)Linux环境进程间通信(一)管道及有...转载 2020-08-28 08:38:47 · 598 阅读 · 0 评论 -
信号量函数(semget、semop、semctl)及其范例
信号量函数由semget、semop、semctl三个函数组成。下面的表格列出了这三个函数的函数原型及具体说明。1. semget函数原型 semget(得到一个信号量集标识符或创建一个信号量集对象) 所需头文件 #include <sys/types.h> #include <sys/ipc.h> #include <sys/sem.h> 函数说明 得到.转载 2020-08-13 21:26:32 · 7392 阅读 · 0 评论