2012-02-16 38 views
0

情報:アイム私はTAILQ構造体持っている間違った構造体とmmap

#define NUMINTS (1000) 
#define FILESIZE (NUMINTS * sizeof(u_int64_t)) 

struct entry *np; 
int result; 

if((np = malloc(sizeof(struct entry))) == NULL){ 
    errx(1, "malloc"); 
} 

np->file = open(temp, O_WRONLY | O_CREAT, (mode_t)0600); 

if (np->file == -1) { 
    errx(1, "Error opening file for writing"); 
} 

np->map = mmap(0, FILESIZE, PROT_READ | PROT_WRITE, MAP_SHARED, np->file, 0); 

if (np->map == MAP_FAILED) { 
    close(np->file); 
    errx(1, "Error mmapping the file"); 
} 

TAILQ_INSERT_TAIL(&tailq_head[thread_id], np, tailq); 

struct entry { 
    int file; 
    int *map; 
    int pos; 
    TAILQ_ENTRY(entry) tailq;   /* Tail queue. */ 
}; 

そして私はmmapedファイル、または願いをしましたTAILQの各エントリにするに「ファイルのエラーが発生しました」というメッセージが表示されるのはなぜですか?

答えて

1

ファイルを書き込み専用にしてから、読み書きをマップしようとしています。ファイルO_RDWRを開こうとしてください。

関連する問題