今天查进程间通信使用共享内存的资料,在看 shm_open(3) 的时候看到 SEE ALSO 里面的 memfd_create(2),发现 Linux 提供了一个独有的共享内存功能。
memfd_create 是 kdbus 的作者引入内核的,作者也提到过,这个功能完全可以用已有的共享文件 API 实现。[1] 但是 memfd_create 不需要在 /dev/shm 创建文件,进程结束后可以自动清理。但是引入 memfd_create 还有一个更重要的原因,是要实现 file sealing.
我觉得 memfd_create 完全可以替代 shm_open 系列 API,只是这个功能只有 Linux 3.17 开始才提供,如果要兼容老系统或者是非 Linux 的 POSIX 系统,就不能用这个了。
[1] https://dvdhrm.wordpress.com/2014/06/10/memfd_create2/
memfd_create 是 kdbus 的作者引入内核的,作者也提到过,这个功能完全可以用已有的共享文件 API 实现。[1] 但是 memfd_create 不需要在 /dev/shm 创建文件,进程结束后可以自动清理。但是引入 memfd_create 还有一个更重要的原因,是要实现 file sealing.
我觉得 memfd_create 完全可以替代 shm_open 系列 API,只是这个功能只有 Linux 3.17 开始才提供,如果要兼容老系统或者是非 Linux 的 POSIX 系统,就不能用这个了。
[1] https://dvdhrm.wordpress.com/2014/06/10/memfd_create2/