1
내가 mmap에있는 파일 열기를 시도하고 작동하지 MAP_SHARED : MAP_PRIVATE를 사용하는 경우 그것은 잘 작동 ,하지만 MAP_SHARED는 잘못된 인수 오류가 발생합니다 mmap를 인도 표준시의 읽기 파일/쓰기의 mmap은
int size;
struct stat s;
const char * file_name = argv[1];
int fd = open (argv[1], O_RDWR);
int pagesize = sysconf(_SC_PAGE_SIZE);
/* Get the size of the file. */
int status = fstat (fd, & s);
size = s.st_size;
size += pagesize-(size%pagesize);
//mmap memory
d = mmap (0, size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
//error handeling
if(d == -1)
{
perror("mmap");
printf("Error opening file %s\n",argv[1]);
return -1;
}
내가 뭘 잘못하고 있니?
d는 AzzUr1 @ 부호 문자 – arnoapp
: 그것은 파일 시스템 드라이버의에서 패러랠이 질문은 나에게 많은 도움이
... 메모리 수정의이 종류를 구현하고 있지 않는 것 같다 올바른 방법 :'d'를 포인터로 만드십시오. 'void * d;'와 (void *) - 1을 비교하라. 'if (d == (void *) - 1)'이면, 설정에 대해 조금 더 이야기하십시오. OS가 어떤 것인지, 컴파일러가 경고를 받는지, 어떻게 프로그램을 호출 할 것인지, 어떤 출력을 얻을 것인지 등을 결정할 수 있습니다. 그리고 mmap()에 전달하는 '크기'는 무엇입니까? (확인을 위해 프린트해라.) – nos
당신은 확실히'open()'을 검사해야하고,'fstat()'호출을 검사해야한다. 둘 중 하나라도 실패하면 문제가 있음을 알게됩니다. 또한 이미 제안했듯이'fd','pagesize','status','size','argv [1]'과 같은 키 값을 출력해야합니다. –