ram中的共享内存或命名管道
Shared memory or named pipes in ram?
我想在两个不同的程序之间进行通信。一个改装的氛围灯程序,输出led信息和我自己的程序,读取这些信息。
我读过关于命名管道和共享内存的文章。但对我来说,数据存储在哪里还不清楚。由于我会交换很多数据,我不想每次都把这些数据写入磁盘。我使用的是树莓派,sd卡应该可以再使用一段时间;)
因此,基本问题是:用什么方法可以在不写入磁盘的情况下将信息交换到另一端?我不确定共享内存是否被写入ram,我想弄清楚这一点。我读到的另一个想法是/dev/shm,它应该是一个ram磁盘。我也可以在这个位置使用命名管道吗?信息会保存在ram中吗?
最好的方法是什么?谢谢:)
我读过关于命名管道和共享内存的文章。但对我来说还不清楚其中存储数据。
在这两种情况下,数据都存储在内存中(命名管道看起来像是位于文件系统中,但实际数据存储在内存上)。
什么方法更好,取决于实际应用。管道具有相当有限的缓冲区(很可能是64kb
),当缓冲区已满时,对它的写入将被阻塞。共享内存可以是任意大的,但不利的是,共享内存就像普通内存一样。你必须自己处理同步等问题。
共享内存和命名管道(以及unix域套接字)IPC不会写入您的SD卡,除非您分配的内存超过可用的物理RAM(256MB或512MB,具体取决于您的raspberrypi型号)。如果你这样做,它将开始交换,并且可能会减慢速度。
相关文章:
- 将字符串存储在c++中的稳定内存中
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- Win32编译器选项和内存分配
- 在进程中对同一管道进行读取和写入时C++管道出现问题
- 当vector是tje全局变量时,c++中vector的内存管理
- 带内存和隔离功能的SQLite
- 是否可以通过C++扩展强制多个python进程共享同一内存
- 迭代时从向量和内存中删除对象
- IPC使用多个管道和分支进程来运行Python程序
- 在C++中打印指向不同基元数据类型的指针的内存地址
- 这个指针和内存代码打印是什么?我不知道是打印垃圾还是如何打印我需要的值
- 多个文件的内存分配错误"在抛出 'std :: bad_alloc' what (): std :: bad_alloc 的实例后终止调用" [C++]
- 为什么示例代码访问IUnknown中已删除的内存
- 如何在C++类内存结构中创建"spacer"?
- read() 上的不同行为取决于写入不可写内存时表示文件、匿名管道或套接字的文件描述符
- 管道和字符串流-在字符串流中写入时内存泄漏
- 获取错误代码 998 尝试从命名管道读取时对内存位置的访问无效
- malloc错误“命名管道打开时内存损坏(快速)
- 使用匿名管道是否为线程间通信引入了内存屏障
- ram中的共享内存或命名管道