file_allocate
This commit is contained in:
parent
04220af434
commit
a5c2c35bf6
1 changed files with 67 additions and 0 deletions
67
file_allocate.c
Normal file
67
file_allocate.c
Normal file
|
|
@ -0,0 +1,67 @@
|
||||||
|
#define _GNU_SOURCE /* Required for linux fallocate */
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <linux/falloc.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
int posix_falloc(void);
|
||||||
|
int file_trunc(void);
|
||||||
|
int linux_falloc(void);
|
||||||
|
|
||||||
|
#define FILENAME "allocated.bin"
|
||||||
|
|
||||||
|
int main(void) {
|
||||||
|
posix_falloc();
|
||||||
|
file_trunc();
|
||||||
|
linux_falloc();
|
||||||
|
|
||||||
|
return EXIT_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
int posix_falloc(void) {
|
||||||
|
int fd = open(FILENAME, O_CREAT | O_WRONLY, 0666);
|
||||||
|
if (fd == -1) {
|
||||||
|
return EXIT_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
off_t length = 1024 * 1024; // 1 MB
|
||||||
|
int ret = posix_fallocate(fd, 0, length);
|
||||||
|
if (ret != 0) {
|
||||||
|
return EXIT_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
close(fd);
|
||||||
|
remove(FILENAME);
|
||||||
|
return EXIT_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
int linux_falloc(void) {
|
||||||
|
int fd = open(FILENAME, O_CREAT | O_WRONLY, 0666);
|
||||||
|
if (fd == -1) {
|
||||||
|
perror("Error");
|
||||||
|
return EXIT_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
off_t length = 1024 * 1024; // 1 MB
|
||||||
|
if (fallocate(fd, 0, 0, length) == -1) {
|
||||||
|
perror("fallocate");
|
||||||
|
return EXIT_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
close(fd);
|
||||||
|
remove(FILENAME);
|
||||||
|
return EXIT_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
int file_trunc(void) {
|
||||||
|
int fd = open(FILENAME, O_CREAT | O_WRONLY, 0666);
|
||||||
|
if (fd == -1) {
|
||||||
|
perror("Error");
|
||||||
|
return EXIT_FAILURE;
|
||||||
|
}
|
||||||
|
off_t length = 1024 * 1024; // 1 MB
|
||||||
|
ftruncate(fd, length);
|
||||||
|
remove(FILENAME);
|
||||||
|
return EXIT_SUCCESS;
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue