gpt4 book ai didi

c - POSIX 共享内存 + 目录

转载 作者:太空宇宙 更新时间:2023-11-03 23:56:52 25 4
gpt4 key购买 nike

我正在使用的操作系统(IBM CNK,它不是 Linux,但有点符合 POSIX)不允许我使用 fopen() 或 mkdir( ), 分别。看起来我必须使用 shm_open() 来获取文件描述符,然后使用 fdopen() 来使用共享区域进行文件 I/O。

  • 我需要使用 ftruncate() 设置共享区域的大小,还是它会自动增长?我试过了,我可以简单地 fprintf 进入该区域并且它有效,但它安全吗?联机帮助页只说:

    A new shared memory object initially has zero length — the size of the object can be set using ftruncate(2). The newly allocated bytes of a shared memory object are automatically initialized to 0.

  • 我要 mmap() 区域吗?我只是想在内存中有一个包含文件的目录。

  • 我如何在/dev/shm 中创建一个新目录?这是“像使用普通文件系统一样使用/dev/shm”的新事物吗?/dev/shm 中的目录可能不是标准目录吗?

最佳答案

您的操作系统是否提供功能齐全的 mmap ?您是否只需要亲戚中的共享内存区域,即您 fork 关闭的进程?如果满足这两个条件,您根本不需要任何文件,只需使用 mmap:

char *shm_area;
shm_area = mmap(NULL, mySHMsize, PROT_READ | PROT_WRITE, MAP_ANON | MAP_SHARED, 0, 0);

if (fork() == 0) {
// Child, can access shm_area.
} else {
// Parent, can access shm_area.
}

关于c - POSIX 共享内存 + 目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3520917/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com