当前位置: 技术问答>linux和unix
求解答啊!!!
来源: 互联网 发布时间:2017-02-12
本文导语: #include #include #include #include #include #include #include #include #include #define NAME "/tmp/lhb/myshm" ...
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define NAME "/tmp/lhb/myshm"
int main(int argc,char *argv[])
{
int shmid;
key_t key;
char *w_addr;
key = ftok(NAME,'a');
if(key == -1)
{
printf("key erron");
}
printf("key = %dn",key);
if(argc != 2)
{
printf("argv erron");
}
shmid = shmget(key,1024,O_RDWR);
printf("shmid = %dn",shmid);
if(shmid == -1)
{
printf("shmget erron");
exit(-1);
}
w_addr = shmat(shmid,0,0);
memset(w_addr,0,sizeof(w_addr));
write(w_addr,argv[1],1024);
exit(0);
}
这是创建一个write的共享内存,为什么shmget的返回值会是 -1 ???难道是哪里出错了??? gcc编译又不会报错啊。。。
#include
#include
#include
#include
#include
#include
#include
#include
#define NAME "/tmp/lhb/myshm"
int main(int argc,char *argv[])
{
int shmid;
key_t key;
char *w_addr;
key = ftok(NAME,'a');
if(key == -1)
{
printf("key erron");
}
printf("key = %dn",key);
if(argc != 2)
{
printf("argv erron");
}
shmid = shmget(key,1024,O_RDWR);
printf("shmid = %dn",shmid);
if(shmid == -1)
{
printf("shmget erron");
exit(-1);
}
w_addr = shmat(shmid,0,0);
memset(w_addr,0,sizeof(w_addr));
write(w_addr,argv[1],1024);
exit(0);
}
这是创建一个write的共享内存,为什么shmget的返回值会是 -1 ???难道是哪里出错了??? gcc编译又不会报错啊。。。
|
shmid = shmget(key,1024,O_RDWR|IPC_CREAT|IPC_EXCL);
|
共享内存是否已经存在?
不存在需要使用 IPC_CREAT 创建
不存在需要使用 IPC_CREAT 创建
|
shmid = shmget(key, 1024, IPC_CREAT | IPC_EXCL | 0666);
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。