Вместо получения размера файла выходит segmentation fault с разным значением
Продолжаю писать свой вариант создания из обычного файла -> sparce файла
Сейчас пытаюсь получить размер файла, чтобы потом применить fallocate(fd, FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE, 0, size), но получаю ошибку segmentation fault
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int createSparseFile(const char *path) {
int file;
int mode;
int size;
struct stat st;
file = open(path, O_RDWR); /* Открываю файл */
stat(path, &st); /* Получаю информацию о файле */
size = st.st_size; /* Получаю размер файла */
printf(size);
/*
Найти ближайший нулевой байт,
найти ближайший ненулевой байт,
вызвать ftruncate для диапазона от первого нулевого до первого ненулевого,
повторять в цикле до конца файл
*/
}
int main (int argc, char **argv) {
if (argc == 1) {
createSparseFile("output");
printf("getopt test\n");
return 0;
}
if (argc == 2) {
char ch;
FILE * fp;
if((fp = fopen(argv[1], "a")) == NULL) {
printf("Can't open \n");
exit(1);
}
for(;;) {
if (EOF == (ch = getchar())) {
break;
}
fputc(ch, fp);
fputc(ch, stdout);
}
fclose(fp);
}
return 0;
}