C shmget中没有此类文件或目录错误
我在Ubuntu上用C实现了共享内存的概念。我创建了两个文件server.c和client.c,首先编译server.c,然后编译client.c并运行它。但它显示了一个错误。“没有这样的文件或目录” 此错误出现在client.c文件中,因为找不到请求的共享内存段。请帮助我如何解决这个问题 这是我的密码 服务器.cC shmget中没有此类文件或目录错误,c,ubuntu,ipc,shared-memory,C,Ubuntu,Ipc,Shared Memory,我在Ubuntu上用C实现了共享内存的概念。我创建了两个文件server.c和client.c,首先编译server.c,然后编译client.c并运行它。但它显示了一个错误。“没有这样的文件或目录” 此错误出现在client.c文件中,因为找不到请求的共享内存段。请帮助我如何解决这个问题 这是我的密码 服务器.c #include<sys/types.h> #include<sys/shm.h> #include<sys/ipc.h> #in
#include<sys/types.h>
#include<sys/shm.h>
#include<sys/ipc.h>
#include<string.h>
#include<stdlib.h>
#include<stdio.h>
#include<errno.h>
#define SHMSIZE 100
int main()
{
int shmid;
key_t key;
char *shm, *s;
key=9876;
shmid=shmget(key,SHMSIZE,IPC_CREAT|0666);
if(shmid<0)
{
printf("%s",strerror(errno));
perror("Error in Shared Memory get statement");
exit(1);
}
shm=shmat(shmid,NULL,0);
if(shm== (char *) -1)
{
perror("Error in Shared Memory attachment");
exit(1);
}
memcpy(shm,"Hello World",11);
s=shm;
s+=11;
while(*shm!='*')
{
sleep(1);
}
return 0;
}
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#定义SHMSIZE 100
int main()
{
int shmid;
钥匙(t)钥匙;;
字符*shm,*s;
密钥=9876;
shmid=shmget(键,SHMSIZE,IPC|u CREAT | 0666);
如果(shmidshmget()因“没有这样的文件或目录”而失败,这一事实只意味着它没有找到具有该键的段(现在是迂腐的:没有id-使用id我们通常指shmget()返回的值,随后使用)-您检查过shmid是否相同吗?您的代码在我的系统上运行良好
只是在它周围添加了一个main(),希望对您有所帮助
key=9876;
shmid=shmget(key,SHMSIZE,0666);
if(shmid<0)
{
printf("%s",strerror(errno));
perror("Error in Shared Memory get statement");
shmid = shmget(key, SHMSIZE, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH | IPC_CREAT);
if (shmid == -1) {
printf("%s",strerror(errno));
perror("Error in Shared Memory get statement");
exit(1);
}
}
printf("Shmget() successful %d\n",shmid);
key=9876;
shmid=shmget(键,SHMSIZE,0666);
如果(shmidshmget()因“没有这样的文件或目录”而失败,这一事实只意味着它没有找到具有该键的段(现在是迂腐的:没有id-使用id我们通常指shmget()返回的值,随后使用)-您检查过shmid是否相同吗?您的代码在我的系统上运行良好
只是在它周围添加了一个main(),希望对您有所帮助
key=9876;
shmid=shmget(key,SHMSIZE,0666);
if(shmid<0)
{
printf("%s",strerror(errno));
perror("Error in Shared Memory get statement");
shmid = shmget(key, SHMSIZE, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH | IPC_CREAT);
if (shmid == -1) {
printf("%s",strerror(errno));
perror("Error in Shared Memory get statement");
exit(1);
}
}
printf("Shmget() successful %d\n",shmid);
key=9876;
shmid=shmget(键,SHMSIZE,0666);
如果(shmidd)您在运行客户端之前运行服务器吗?并保持服务器运行吗?我试过了,代码对我来说很好。是的。我先运行Compliated server,然后编译客户端,然后发出run命令。我的代码第一次运行,但现在出现了这个错误shmget()失败的事实是“没有这样的文件或目录”仅表示它没有找到具有该键的段(现在是pedantic:not id-对于id,我们通常引用shmget()返回的值,随后使用)-您检查过shmid是否相同吗?您的代码在我的系统上运行良好。您在运行客户端之前运行过服务器吗?并保持服务器运行吗?我尝试过,代码对我来说运行良好。是的。我先运行Compliated server,然后编译客户端,然后发出run命令。我的代码第一次运行,但现在出现此错误shmget()在“没有这样的文件或目录”的情况下失败,这一事实只意味着它没有找到具有该键的段(现在是迂腐的:没有id-使用id我们通常指shmget()返回的值,随后使用)-您检查过shmid是否相同吗?您的代码在我的系统上运行良好。