shmat() 函数的标志值
Flag value of shmat() function
此函数用于将分配的内存段附加到调用进程。它需要三个参数。第一个参数对应于内存段的标识符。第二个参数是指向内存段的指针。对于第二个参数,将 NULL 或 0 值传递给函数,因为当我们分配共享内存时,我们只知道它的标识符而不是它的内存地址。
但是,我找不到第三个参数的任务是什么。我遇到的一些代码将标志值设置为0。NULL和0在C语言中的含义相同,我认为不需要额外调整;因此,NULL 作为第三个参数传递给函数。
有没有人可以解释一下 shmat() 函数中标志值的任务?
定义了四个标志:
- SHM_RDONLY - 附加段以供阅读;默认为 Read/Write
- SHM_RND - 附加发生在地址等于
shmaddr
向下舍入到最接近的 SHMLBA 倍数(通常定义为页面大小)
- SHM_REMAP - 可以在 shmflg 中指定标志,以指示段的映射应替换范围内的任何现有映射,该范围从 shmaddr 开始并持续到段的大小。此标志是 Linux 特定的。
- SHM_EXEC - 允许执行段的内容。 Linux-具体。
传递值 0 意味着所有标志都未设置。我不会在这里使用 NULL,因为 NULL 意味着参数类型是指针,而事实并非如此。
参见 shmat(2) 手册页。
此函数用于将分配的内存段附加到调用进程。它需要三个参数。第一个参数对应于内存段的标识符。第二个参数是指向内存段的指针。对于第二个参数,将 NULL 或 0 值传递给函数,因为当我们分配共享内存时,我们只知道它的标识符而不是它的内存地址。
但是,我找不到第三个参数的任务是什么。我遇到的一些代码将标志值设置为0。NULL和0在C语言中的含义相同,我认为不需要额外调整;因此,NULL 作为第三个参数传递给函数。
有没有人可以解释一下 shmat() 函数中标志值的任务?
定义了四个标志:
- SHM_RDONLY - 附加段以供阅读;默认为 Read/Write
- SHM_RND - 附加发生在地址等于
shmaddr
向下舍入到最接近的 SHMLBA 倍数(通常定义为页面大小) - SHM_REMAP - 可以在 shmflg 中指定标志,以指示段的映射应替换范围内的任何现有映射,该范围从 shmaddr 开始并持续到段的大小。此标志是 Linux 特定的。
- SHM_EXEC - 允许执行段的内容。 Linux-具体。
传递值 0 意味着所有标志都未设置。我不会在这里使用 NULL,因为 NULL 意味着参数类型是指针,而事实并非如此。
参见 shmat(2) 手册页。