lseek를 사용한 대용량 더미 파일 생성(c, linux)

2023. 6. 11. 21:36시스템프로그래밍

이 글에서는 lseek를 사용하여 대용량 파일을 생성하는 프로그램을 만든다.

 

리눅스에서는 fallocate 명령어와 dd 명령어를 사용하여 간단하게 큰 크기의 파일을 만들 수 있다.

 

그러나 이 글에서는 입력받은 이름의 파일의 파일 디스크립터를 생성하고,

 

해당 파일의 파일 디스크립터를 lseek()함수를 이용하여 위치를 이동시켜서 큰 크기의 파일을 만든다.

 

코드 (아무 내용이 없는 파일 사이즈가 10000bytes인 파일 만들기)
1 #include<stdio.h>
2 #include<sys/types.h>
3 #include<sys/stat.h>
4 #include<fcntl.h>
5 #include<stdlib.h>
6 #include<unistd.h>
7
8 int main(int argc, char* argv[]){
9 int fd;
10 char buf[1];
11
12 if((fd=open(argv[1],O_WRONLY|O_CREAT|O_TRUNC))<0){
13 perror("open");
14 exit(1);
15 }// 파일 열기가 에러가 발생한 경우
16
17 // lseek를 시작에서 9999번째 바이트만큼 이동시키고 1바이트를 파일에 쓴다.
18 lseek(fd, 9999, SEEK_SET);
19 write(fd,buf,1);
20
21 close(fd);
22 return 0;
23 }
 

실행 후 전체 파일 목록 보기
10000 bytes의 파일 생성