へのstrcpyを使用しているとき、私はこの起こって簡単なプログラムがあります。私のコードで間違ってバスエラー(コアダンプ)mmapによってファイル
int main(void) {
int fd;
const char *text = "This is a test";
fd = open("/tmp/msyncTest", (O_CREAT | O_TRUNC | O_RDWR), (S_IRWXU | S_IRWXG | S_IRWXO));
if (fd < 0) {
perror("open() error");
return fd;
}
/* mmap the file. */
void *address;
off_t my_offset = 0;
address = mmap(NULL, 4096, PROT_WRITE, MAP_SHARED, fd, my_offset);
if (address == MAP_FAILED) {
perror("mmap error. ");
return -1;
}
/* Move some data into the file using memory map. */
strcpy((char *)address, text);
/* use msync to write changes to disk. */
if (msync(address, 4096 , MS_SYNC) < 0) {
perror("msync failed with error:");
return -1;
}
else {
printf("%s","msync completed successfully.");
}
close(fd);
unlink("/tmp/msyncTest");
}
何を?私はいくつかの簡単なテストを行いました。問題はstrcpy
から来ているようです。しかし、定義によると、私は問題はないと思う。
'fd'のチェック方法は表示されていません。 'len'と' my_offset'がどのように設定されているか。あなたが 'mmap()'呼び出しをチェックする方法。それらに関連付けられた何かがコードを失敗させたと推測できます。 –
@JonathanLeffler [OK]を、私はすべてのコードを投稿します。 – HuangJie
私たちはMCVE([最小限の完全かつ実証可能な例を作成するには?](http://stackoverflow.com/help/mcve))を見る必要があります。 –