共有ファイルを作成しようとしていますが、これはintでなければなりません。しかしintファイルの作成方法
int f;
、私はそれは私にエラーを与える
if ((fstat(f, &stbuf) != 0) || (!S_ISREG(stbuf.st_mode)))
に達します。ファイルのような文字列を含んでいなければなりません:
abcd
を私の推測では、次のですが、それは動作しません:
int main() {
int f;
void *memoria = NULL;
int tam;
struct stat stbuf;
char string[15] = {0};
f = open("fichero.txt", O_RDWR, S_IRUSR);
// ERROR IS HERE!!
if ((fstat(f, &stbuf) != 0) || (!S_ISREG(stbuf.st_mode))) {
printf("Error");
}
tam = stbuf.st_size;
printf("%d\n", tam);
// Proyect the file
memoria = mmap(0, tam, PROT_WRITE, MAP_SHARED, f, 0);
// Copy the string into the file
memcpy(memoria, "abcd", 5);
munmap(memoria, tam);
return 0;
}
私はオープンでパラメータを変更する必要があります? 私は何が間違っていますか?ありがとう!
あなたは私たちにあなたが得るエラーメッセージを与えることができますか? –
'open'が成功し、特定のエラーを出力しないかどうかはチェックしません。これはデバッグを不可能にします。 –
セグメンテーションフォルト。私は、私が作成していないファイルにアクセスしようとしていると思うが、それをしたくない、実際にそれを生成したい。 –