Mmap问题 - >段错误

时间:2011-05-20 18:43:11

标签: 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;

我哪里错了?

1 个答案:

答案 0 :(得分:1)

您的代码适用于我。尝试在代码中添加一些错误检查。你会知道什么是失败的,为什么:

#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;
}