我正在开发一个 fuse 程序,当调用 fuse 中的 read() 调用时,它将读取特定文件 A 并将其保存到其缓冲区中。在我的例子中,我让 fuse 向我的程序发送一条消息,它从远程服务器检索数据并将其保存到这个文件 A,然后 fuse 读取这个文件以获取数据。
有没有办法让我的程序把数据直接保存到fuse的buffer中,避免I/O操作。命名管道是一个好的选择吗?我的意思是它是否将其数据存储在内存中?或者我可以将此缓冲区更改为共享内存吗?我知道如何创建共享内存,但不知道是否可以转换它。好像是私有(private)的。
谢谢你们。
最佳答案
哦,我想在这里你想在两个不同的进程之间进行一些通信,然后 IPC(进程间通信) 的想法来了..
有5种方法可以做到这一点
1 共享内存允许进程通过简单的读取和共享内存进行通信 写入指定的内存位置。
2 映射内存类似于共享内存,只是它与一个 文件系统中的文件。
3 管道允许从一个进程到相关进程的顺序通信。
4 FIFO类似于管道,只是不相关的进程可以相互通信 因为管道在文件系统中被赋予了一个名称。
5 Sockets 支持不相关进程之间的通信,甚至在不同的 计算机。
我认为这里共享内存是个不错的选择。
1> 1st declare some shared memory in your program then attache it with fuse
2> when fuse send a message then your program should get data from server
and save it to that shared memory
3> make some signaling methods(to avoid any race condition) so after that
fuse can use that data
关于c - 有没有办法在不使用共享内存的情况下更改另一个进程的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8637158/