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 } |
'시스템프로그래밍' 카테고리의 다른 글
mutex lock의 유무에 따른 동작 차이 확인 (c언어, linux) (0) | 2023.06.09 |
---|---|
Named pipe를 사용한 프로세스 간 양방향 채팅 프로그램 (0) | 2023.06.09 |