近期调试了一个Bug,最后发现是ftok( )产生的key值引起的,纪录下以备忘。
1. ftock产生的 key值不一定是唯一的
ftock一般传入不同的文件或目录,但有时,不同的名子会产生出相同的key值。 所以,可以通过ipcs命令查看一下key值是否已存在。
ipcs
-s
ipcs
-m
2. ftock文件指定要求
很多人一般会用系统目录,比如: /tmp;/bin 等来创建 key值,但是如果有别的程序也用了这个名子创建key值,然后创建信号量或共享内存, 那么我们也创建了信号量或共享内存,那么在使用过程中就可以会出现问题。 所在传入的名子最好不要用系统的,而用程序自己的,比如:/usr/locale/myapp/lib