使用环境:Ubuntu 11.11 c++
错误产生:
使用ftok()函数来映射一个键值,函数很简单
#include <sys/types.h>
#include <sys/ipc.h>
key_t ftok(const char *pathname, int proj_id);
即传递一个路径名,一个辅助数值即可唯一定位一个键值
代码如下:
//获取对应的键值
key_t key=ftok(SEM_PATH, 25);
其中,#define SEM_PATH "stuy1001593"
但是在执行的时候出现如下错误提示(需要自己来输出):
ENOENT: A component of path does not exist, or path is an empty string.
查找原因:
参数名是pathname,即一个路径名。以前没用过该函数,也没有查详细的文档,所以就随便写了
原来man ftok里已经说明:
pathname (which must refer to an existing, accessible file)
即,必须指向一个已经存在,并可以访问的文件(文件夹也可以)
问题解决:
重新给SEM_PATH赋值成一个有效的路径,映射成功!