我使用适当的标志打开共享内存和信号量:
sem = sem_open("/some_name", O_CREAT | O_EXCL, S_IRWXU | S_IRWXG | S_IRWXO, 1);
shm = shm_open("/other_name", O_RDWR | O_CREAT | O_EXCL, S_IRWXU | S_IRWXG | S_IRWXO);
调用不会失败(我检查它们),并且确实有一个进程由其他进程创建它们fork
,exec
而其他进程确实共享内存和信号量,并且有适当的同步。
但是,当我使用该ipcs
命令时,我看不到共享内存和信号量。这是为什么?如果它们没有出现ipcs
,我在哪里可以检查它们?
在我的ipcs
输出中,信号量数组列表中没有任何条目,共享内存中的条目与 skype、firefox 和 plugin-container(firefox)相关。我检查了他们
grep shmid /proc/*/maps # observe pid
readlink /proc/pid/exe