Linux shmget()何时返回零shmid?

Linux shmget()何时返回零shmid?,linux,sysv-ipc,Linux,Sysv Ipc,我正在运行使用SYSV共享内存的简单测试程序。我发现,如果请求的共享内存段已经存在,有时shmget()会返回零shmid。有人能解释在哪种情况下shmaget()返回零shmid吗 提前谢谢 我建议您使用自己选择的搜索引擎搜索man shmaget。或者,如果安装了相应的手册页,您可以在您的系统上执行此操作。我已经浏览了shmget的手册页。它说“成功时,返回一个有效的共享内存标识符。错误时,返回-1”。我担心的是零是有效的吗?在这种情况下,shmget()返回零。如果手册页上是这么说的,我想

我正在运行使用SYSV共享内存的简单测试程序。我发现,如果请求的共享内存段已经存在,有时shmget()会返回零shmid。有人能解释在哪种情况下shmaget()返回零shmid吗


提前谢谢

我建议您使用自己选择的搜索引擎搜索
man shmaget
。或者,如果安装了相应的手册页,您可以在您的系统上执行此操作。我已经浏览了shmget的手册页。它说“成功时,返回一个有效的共享内存标识符。错误时,返回-1”。我担心的是零是有效的吗?在这种情况下,shmget()返回零。如果手册页上是这么说的,我想你应该相信它<代码>-1是错误代码,否则它是有效的共享内存ID(包括
0
)。这在这些类型的函数中非常常见。问题出在哪里?它只是一个ID,不是地址之类的。最有可能的是ID只是递增的,这意味着我错误地检查了shmget()的返回值。我正在检查(0man shmaget。或者在您的系统上搜索,前提是安装了相应的手册页。我已经浏览了shmget的手册页。上面说“成功时,返回一个有效的共享内存标识符。错误时,返回-1”。我关心的是,零是有效的shmid?在哪种情况下,shmget()返回零。如果这是手册页所说的,我认为您应该依赖它。
-1
是错误代码,否则它是一个有效的共享内存ID(包括
0
)。这在这些类型的函数中非常常见。问题出在哪里?它只是一个ID,而不是地址。很可能ID只是递增的。这意味着我错误地检查了shmget()的返回值。我检查的是(0