Проблема Mmap -> segfault - PullRequest
       17

Проблема Mmap -> segfault

0 голосов
/ 20 мая 2011

Я хотел бы поделиться, чтобы использовать mmap.Однако это не работает, потому что я получаю segfault:

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 Ответ

1 голос
/ 20 мая 2011

Ваш код отлично работает для меня. Попробуйте добавить некоторые проверки ошибок в ваш код. Вы будете знать, что терпит неудачу и почему:

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