File descriptor
- 오픈된 파일에 대해서 접근할 수 있는 접근자이다.
- 프로그램이 shell에서 실행되면, 다음 3가지가 자동으로 실행된다. 이것들은 표준 입출력장치이다.
- STDIN_FILENO
- 표준 입력장치
- 키보드에 동치된다
- 0번으로 정의되어 있다
- STDOUT_FILENO
- 표준 출력장치
- 스크린에 동치된다
- 1번으로 정의되어 있다
- STDERR_FILENO
- 표준 에러장치
- 주로 우선순위가 높은 에러 메세지같은 것들을 출력한다
- 2번으로 정의되어 있다
File Offset
- 이 파일에서 다음에 I/O를 수행할 위치를 나타내는 것이다.
- 처음에 파일이 Open되면 맨 처음(0byte)이 file offset의 값이 된다.
- Read와 Write는 현재 file offset값에서부터 수행된다.
- file offset은 Read와 Write 후에 자동으로 변경된다.

Reading
- Unix는 read와 write 함수를 통해서 다른 디바이스에서 값을 읽어오거나 입력할 수 있다.
#include <unistd.h>
ssize_t read(int fildes, void* buf, size_t nbyte);
- file descriptor : open함수는 지정된 경로의 파일을 열어준다. 이 파일에 접근할 수 있는 값을 말한다. 커널이 오픈된 파일에 접근 가능케 하는 지시자라고 생각하면 된다.
- buffer : char buf[]로 만들어진 char형 배열을 먼저 만들어야 한다. 이 배열의 포인터 값을 넘겨주어 배열에 값을 저장한다.
- nbyte : 숫자만큼 결과값을 읽어온다.
- ssize_t는 signed integer 데이터
- size_t는 unsigned integer 데이터
Return value
- 만약 성공적으로 수행되면 실제로 읽어들인 byte 수만큼 return이 된다.
- 에러가 나면 -1을 return한다.
- 요청한 바이트 수보다 적은 바이트 수가 return될 수 있다.
- 파일의 크기가 클 때, 적당한 크기의 배열을 마련해놓고 특정 byte씩 읽는 역할을 수행할 수 있다. 이를 통해 파일이 끝나는 위치(EOF)를 파악할 수 있다.
- 파일이 끝나는 위치(EOF)에서 다시 수행하면 0을 return한다.
Writing
- Unix는 read와 write 함수를 통해서 다른 디바이스에서 값을 읽어오거나 입력할 수 있다.
#include <unistd.h>
ssize_t write(int fildes, const void* buf, size_t nbyte);
- file descriptor : open함수는 지정된 경로의 파일을 열어준다. 이 파일에 접근할 수 있는 값을 말한다. 커널이 오픈된 파일에 접근 가능케 하는 지시자라고 생각하면 된다.
- buffer : char buf[]로 만들어진 char형 배열을 먼저 만들어야 한다. 이 배열의 포인터 값을 넘겨주어 배열에서 값을 읽어온다.
- nbyte : 숫자만큼 결과값을 읽어온다.
- ssize_t는 signed integer 데이터
- size_t는 unsigned integer 데이터
Return value
- 만약 성공적으로 수행되면 실제로 읽어들인 byte 수만큼 return이 된다.
- 에러가 나면 -1을 return한다.
- 요청한 바이트 수보다 적은 바이트 수가 return될 수 있다.
- 파일의 크기가 클 때, 적당한 크기의 배열을 마련해놓고 특정 byte씩 읽는 역할을 수행할 수 있다. 이를 통해 파일이 끝나는 위치(EOF)를 파악할 수 있다.
- 파일이 끝나는 위치(EOF)에서 다시 수행하면 0을 return한다.
File descriptor
- 오픈된 파일에 대해서 접근할 수 있는 접근자이다.
- 프로그램이 shell에서 실행되면, 다음 3가지가 자동으로 실행된다. 이것들은 표준 입출력장치이다.
- STDIN_FILENO
- 표준 입력장치
- 키보드에 동치된다
- 0번으로 정의되어 있다
- STDOUT_FILENO
- 표준 출력장치
- 스크린에 동치된다
- 1번으로 정의되어 있다
- STDERR_FILENO
- 표준 에러장치
- 주로 우선순위가 높은 에러 메세지같은 것들을 출력한다
- 2번으로 정의되어 있다