施用ftok获取ipc的key值的一点注意事项

使用ftok获取ipc的key值的一点注意事项

        system V消息队列、信号量还有共享内存都采用key_t作为标识,通常使用ftok这个函数来赋予。它的声明如下




pathname是一个已存在的文件路径,而id则为一个整数。在unix98中规定了,如果id值为0,则函数行为是未定义的,大部分的unix的ftok实现并没有要求id值必须不为0,只是按照ftok实现中的规则进行key的计算(当然,采用标准没有定义的写法总是不好的),AIX在这个问题上走得更远,它的实现没有接受未定义的说法,而是直接对id为0的情况返回了-1,所以在这里,为了更好的移植性,id值应该取为非0.