Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C Mmap问题->;断层_C_Segmentation Fault_Mmap - Fatal编程技术网

C 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>

我想分享使用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>
#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)