GNL - static value, fd
static 변수
- 변수를 선언할때
static int
- 메모리 데이터 영역에 저장되어 프로그램이 종료될때까지 남아있는 변수다.
- 정적 변수는 초깃값을 지정하지 않으면 알아서 0으로 초기화된다.
- 함수를 벗어나더라도 해당 변수는 사라지지 않고 유지되며, 함수 시작이아닌 프로그램 시작시 할당되고, 프로그램이 종료될 때 해제된다.
fd (파일 디스크립터)
- open에서 fd를 오픈했다면 fd에 3이 온다 0,1,2 는 stdin, out, error로 설정되어있다. 파일을 오픈할때마다 3,4,5... 순으로 fd를 할당한다.
- fd는 시스템에 따라 다르게
OPEN_MAX
가 설정되어있다.
read 함수
size_t read(int fd, void *buf, size_t bytes)
- 인자로 받은 bytes의 수만큼 fd를 읽어 buf에 저장하는 함수
- 읽어 온 bytes 수를 반환하며, 실패시 -1을 반환하다.
- 파일을 끝까지 읽었다면, 다음 번에는 더 이상 읽을 bytes가 없기 때문에 0을 반환한다.
open 함수
#include <fcntl.h>
int main(void)
{
int fd;
fd = open("hello.txt", O_RDONLY);
if (fd == EOF)
return (0);
close(fd);
return (0);
}
- 대충 이런식으로 사용할 수 있음. open 옵션 변경가능.