我正在尝试使用SysV信号量和共享内存API来应用我对信号量的理论知识。
简而言之,我在50个进程之间共享一个int
大小的内存(由信号量保护),每个进程增加1000次,所以最终我的最终值必须为{{1但奇怪的是我的价值观如下:49962,49965,49366 ......
这是我的c代码:
1000 * 50 = 50000
答案 0 :(得分:1)
我尝试执行你的代码,按预期打印50000。 尝试使用带有密钥的ftok在两个不同的共享内存之间生成非冗余密钥。
key_t key = ftok(FileName, AnyChar); // The program must have the right to access the file.
如果在执行多次执行时获得这些值,那肯定是因为你没有使用ipcrm -a。此命令将删除程序创建的所有新ipcs。