0

新しいテキスト ファイル (パラメーターとして指定) の単純なマッピングを実行しようとしていますが、mmap 呼び出しで ENODEV エラーが発生します。fd は問題ありません (open 呼び出しでエラーはありません)。

ドキュメントによると、このエラーは「指定されたファイルの基になるファイル システムはメモリ マッピングをサポートしていません」を意味します。または別のソースから、 fd が特別なファイル(I / Oまたはデバイスメモリのいずれかのマッピングに使用される可能性のあるファイル)のファイル記述子であることを意味する可能性があることがわかりました。これらの理由のいずれかが当てはまる理由がわかりません。

#include <sys/mman.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <sys/types.h>

#define SIZE1 10240

int main(int argc, char *argv[]){
    char *addr;
int fd;

mode_t mode = S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH;

if(fd = open(argv[1], O_RDWR | O_CREAT | O_TRUNC, mode) == -1){
    printf("error @ open\n");       
}

addr = (char*) mmap(NULL, SIZE1, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
...
munmap(addr, SIZE1);
return 0;
}
4

1 に答える 1