gpt4 book ai didi

c - shmget 系统调用 [Linux] - 分配字节数?

转载 作者:行者123 更新时间:2023-11-30 17:21:01 31 4
gpt4 key购买 nike

使用以下参数调用:

shmget(IPC_PRIVATE, sizeof(int), 0600);

我正在尝试确定将分配多少字节给共享内存块?

我认为它与 PAGE_SIZE 有关(在 32 位操作系统上默认为 4k [4096]?)。

最佳答案

来自(特定于 Linux)man shmget:

A new shared memory segment, with size equal to the value of size rounded up to a multiple of PAGE_SIZE, is created if key has the value IPC_PRIVATE or key isn't IPC_PRIVATE, no shared memory segment corresponding to key exists, and IPC_CREAT is specified in shmflg.

PAGE_SIZE 是在编译内核时定义的,在 x86 上通常为 4 KiB。使用 sysconf(_SC_PAGESIZE)(如果可移植性不是问题,则使用 getpagesize())在程序运行时获取正确的字节值。

但是,即使分配实际上更大,您也不应该使用超过请求大小的共享内存,因为 POSIX 允许实现分配精确大小的内存,因此这种行为可能会在更高版本中改变。

关于c - shmget 系统调用 [Linux] - 分配字节数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28394361/

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