我有一个父程序,它将分叉以下子程序并递增,显示,减少并显示变量'test'(最初为0)15次。我尝试运行它很多次,看看每几行之后我得到了什么输出,但是我无法知道我的'test'变量只显示零,15次。
pybind11_add_module
答案 0 :(得分:1)
我可以看到几件事。
无论代码如何构建,我都会检查shmget和shmat中是否存在错误: 我改变了
shmID = shmget(key,SHARED_MEM,0666) shmID2 = shmget(key2,SHARED_MEM,0666);
通过
if ( (shmID = shmget(key, SHARED_MEM, 0666)) < 0)
{
perror("shmget");
exit(1);
}
if ( (shmID2 = shmget(key2, SHARED_MEM, 0666) < 0)
{
perror("shmat");
exit(1);
}
0666
权限创建SHM但没有IPC_CREAT | IPC_EXCL
。
我建议您使用IPC_CREAT | IPC_EXCL | 0666
标记首次创建。请参阅test
的示例。 counter
应该是相同的。
if ((test = (int *) shmat(shmID, 0, 0)) == -1)
{
perror("shmat");
exit(1);
}
你可以在cli中检查shm是否有问题,例如,已经创建,使用命令ipcs
检查或ipcrm shm
删除并重新初始化:
ipcs shm | grep [your_shm_key or shmid]