此函数用于将已分配的内存段附加到调用进程。它需要三个参数。第一个参数对应于内存段的标识符。第二个参数是指向内存段的指针。对于第二个参数,NULL或0值被传递给函数,因为当我们分配共享内存时,我们只知道它的标识符而不是它的内存地址。
但是,我找不到第三个参数的任务是什么。我遇到的一些代码将标志值设置为0. NULL和0在C语言中具有相同的含义,我认为不需要进行额外的调整;因此,NULL作为第三个参数传递给函数。
是否有人可以在shmat()函数中解释标志值的任务?
答案 0 :(得分:1)
定义了四个标志:
shmaddr
的附加发生器向下舍入到SHMLBA的最接近倍数(通常定义为页面大小)传递值0表示未设置所有标志。我不会在这里使用NULL,因为NULL意味着参数类型是一个指针,它不是。
请参阅shmat(2)手册页。