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