fread(), fgets(), printf() 등./dev/null은 항상 읽을 수 있고, 데이터를 버림./dev/urandom은 암호학적으로 안전한 무작위 데이터를 읽음.\n (0xa, 줄 바꿈 문자).\r\n (0xd 0xa, 캐리지 리턴 + 줄 바꿈).. (자신을 가리키는 링크), .. (부모 디렉토리를 가리키는 링크).mkdir, ls, rmdir./를 기준으로 계층적으로 조직됨.cd 명령으로 cwd를 변경할 수 있음.rwxrwxrwx750 (사용자는 읽기, 쓰기, 실행 가능; 그룹은 읽기, 실행 가능; 다른 사용자는 접근 불가)664 (사용자와 그룹은 읽기, 쓰기 가능; 다른 사용자는 읽기 가능)open(), close()read(), write()lseek()errno에 실패 이유를 설정.perror()와 strerror()는 errno에서 사람이 읽을 수 있는 오류 메시지를 생성.open() 시스템 호출: 파일 열기.creat() 시스템 호출: 파일 생성 (동일한 open() 호출 사용).O_RDONLY, O_WRONLY, O_RDWR, O_CREAT, O_EXCL, O_APPEND, O_TRUNC, O_CLOEXEC.read() 시스템 호출은 열린 파일에서 데이터를 읽음.0: 읽은 바이트 수
write() 시스템 호출은 열린 파일에 데이터를 씀.close() 시스템 호출로 열린 파일을 닫음.#include <unistd.h>
#include <fcntl.h>
int main(int argc, char *argv[]) {
char buf[1024];
int fd, bytes;
if ((fd = open(argv[1], O_RDONLY)) < 0) return -1;
while ((bytes = read(fd, buf, sizeof(buf))) > 0) {
if (write(1, buf, bytes) < 0) return -1;
}
return bytes >= 0;
}
fopen()은 파일을 열고, fdopen()은 열린 파일 디스크립터를 래핑.fread(), fwrite() 함수는 이진 데이터를 읽고 씀.feof()와 ferror() 함수는 EOF 또는 오류 발생 시 0이 아닌 값을 반환.clearerr()는 스트림의 오류/EOF 상태를 재설정.#include <stdio.h>
int main(int argc, char *argv[]) {
char buf[1024];
FILE *fp; int bytes;
if ((fp = fopen(argv[1], "r")) == NULL) return -1;
while (!feof(fp) && (bytes = fread(buf, 1, sizeof(buf), fp)) > 0) {
if (fwrite(buf, 1, bytes, stdout) == 0) return -1;
}
return ferror(fp) || ferror(stdout);
}
fread()는 1바이트를 읽더라도 전체 디스크 블록을 읽을 수 있음.int fflush(FILE *fp);이 설명은 입력 및 출력에 대한 커널 서비스, 파일 시스템의 개념, 파일 디스크립터, UNIX와 표준 I/O의 차이점을 다룹니다.