Как создать файл 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;
}
Должен ли я изменить параметры в открытом?? Что я делаю неправильно? Спасибо!
1 ответ
Решение
Вам нужно использовать O_CREAT
режим для создания файла, если он не существует.
f = open("fichero.txt", O_RDWR | O_CREAT, S_IRUSR);
Вы должны проверить на наличие ошибок от open()
:
if (f == -1) {
perror("open");
exit(1);
}