当前位置: 技术问答>linux和unix
在sun os 5.9下 创建一个posix 共享内存 出现的问题
来源: 互联网 发布时间:2015-06-18
本文导语: 基础的shm_open 调用返回错误 EINVAL(22) 其解释为: EINVAL The shm_open() operation is not supported for the given name. 我给的 name 应该没错,可以手工touch 出此文件,是不是 系统要进行...
基础的shm_open 调用返回错误 EINVAL(22)
其解释为:
EINVAL
The shm_open() operation is not supported for the
given name.
我给的 name 应该没错,可以手工touch 出此文件,是不是 系统要进行什么设置之类的??
哪位能帮帮忙?
附调用代码
//posix share memory size test
#include
#include
#include
#include
#include
#include
#include
#define FILE_MODE (S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH)
main()
{
//调用 shm_open 打开共享内存
int fd;
int flags = O_RDWR | O_CREAT;
char pathname[128];
memset( pathname , 0x00 , sizeof(pathname));
// getcwd( pathname ,sizeof(pathname) -1 );
// strcat( pathname , "/exe/tmp" );
strcpy(pathname , "/tmp/myshare");
if ( (fd = shm_open( pathname , flags, FILE_MODE)) == -1)
{
printf("shm_open error for %s n", pathname);
printf("error no is [%d]n", errno );
return 1;
}
//调整大小
// while(1)
// {
// }
//关闭打开的共享内存
shm_unlink(pathname);
}
其解释为:
EINVAL
The shm_open() operation is not supported for the
given name.
我给的 name 应该没错,可以手工touch 出此文件,是不是 系统要进行什么设置之类的??
哪位能帮帮忙?
附调用代码
//posix share memory size test
#include
#include
#include
#include
#include
#include
#include
#define FILE_MODE (S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH)
main()
{
//调用 shm_open 打开共享内存
int fd;
int flags = O_RDWR | O_CREAT;
char pathname[128];
memset( pathname , 0x00 , sizeof(pathname));
// getcwd( pathname ,sizeof(pathname) -1 );
// strcat( pathname , "/exe/tmp" );
strcpy(pathname , "/tmp/myshare");
if ( (fd = shm_open( pathname , flags, FILE_MODE)) == -1)
{
printf("shm_open error for %s n", pathname);
printf("error no is [%d]n", errno );
return 1;
}
//调整大小
// while(1)
// {
// }
//关闭打开的共享内存
shm_unlink(pathname);
}
|
看一下IPC的命名规则:
strcpy(pathname , "/tmp/myshare");---->
strcpy(pathname , "/myshare");
这样就可以了。
strcpy(pathname , "/tmp/myshare");---->
strcpy(pathname , "/myshare");
这样就可以了。