C Mmap问题->;断层
我想分享使用mmap。但是它不起作用,因为我有一个错误:C Mmap问题->;断层,c,segmentation-fault,mmap,C,Segmentation Fault,Mmap,我想分享使用mmap。但是它不起作用,因为我有一个错误: int fdL = open("/dev/zero", O_RDWR | O_CREAT); int *ligneC = (int *) mmap(0, sizeof (int), PROT_READ | PROT_WRITE, MAP_SHARED, fdL, 0); *ligneC = 0; 我哪里错了?你的代码对我来说很好。尝试向代码中添加一些错误检查。您将了解失败的原因和原因: #include <stdlib.h>
int fdL = open("/dev/zero", O_RDWR | O_CREAT);
int *ligneC = (int *) mmap(0, sizeof (int), PROT_READ | PROT_WRITE, MAP_SHARED, fdL, 0);
*ligneC = 0;
我哪里错了?你的代码对我来说很好。尝试向代码中添加一些错误检查。您将了解失败的原因和原因:
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/mman.h>
#include <errno.h>
#include <string.h>
int main(int argc,char*argv[])
{
int fdL = open("/dev/zero", O_RDWR | O_CREAT);
if(fdL<0)
{
perror("open");
exit(1);
}
int *ligneC = (int *) mmap(0, sizeof (int), PROT_READ | PROT_WRITE, MAP_SHARED, fdL, 0);
if(ligneC==(int*)-1)
{
perror("mmap");
exit(1);
}
*ligneC = 0;
return 0;
}
#包括
#包括
#包括
#包括
#包括
#包括
#包括
int main(int argc,char*argv[])
{
int-fdL=open(“/dev/zero”,O_-RDWR | O_-CREAT);
如果(fdLYou)正在指定O_create
并缺少模式;但是,这不可能是问题,因为我假设/dev/zero
已经存在。这是您的全部代码吗?错误来自:*ligneC=0;我不知道为什么让我“重新措辞”:这是您的全部代码吗?不,这是用于学生项目的(使用多个进程进行矩阵计算),但对于这一步,我必须使用mmap。是否有其他方法在我的所有进程之间共享变量?我的意思是,它不应该失败,其他一些可能会损坏。谢谢!我得到:mmap:设备不支持的操作(我使用Mac)