当前位置: 技术问答>linux和unix
linux下共享内存shmat失败
来源: 互联网 发布时间:2016-04-22
本文导语: 如题,请高手指教! 前面几步:ftok,shmget都成功了,返回值不是-1,shmat是居然出错,可能是什么问题? 还有ftok中第一个参数指定文件路径,这个路径必须存在么?我的程序中如果这个路径不存在就会返回-1,为什么...
如题,请高手指教!
前面几步:ftok,shmget都成功了,返回值不是-1,shmat是居然出错,可能是什么问题?
还有ftok中第一个参数指定文件路径,这个路径必须存在么?我的程序中如果这个路径不存在就会返回-1,为什么?
谢谢!!
前面几步:ftok,shmget都成功了,返回值不是-1,shmat是居然出错,可能是什么问题?
还有ftok中第一个参数指定文件路径,这个路径必须存在么?我的程序中如果这个路径不存在就会返回-1,为什么?
谢谢!!
|
估计权限问题
shm_id = shmget(key,8,IPC_CREAT);
->
shm_id = shmget(key,8,IPC_CREAT | 0666);
shm_id = shmget(key,8,IPC_CREAT);
->
shm_id = shmget(key,8,IPC_CREAT | 0666);
|
把你的程序贴出来看下呢
|
0666是指用户可读可写组可读可写其它用户都是可读写666,
ftok
如果第一参数文件路径或者文件不存在,或者不可访问(无权限)时返回-1
第二参数id,是一起组合生成key用的,也就是说从文件名导出的信息与id的低8位组合成一个IPC键KEY值
ftok
如果第一参数文件路径或者文件不存在,或者不可访问(无权限)时返回-1
第二参数id,是一起组合生成key用的,也就是说从文件名导出的信息与id的低8位组合成一个IPC键KEY值