1. 개요
파일은 UNIX 또는 그와 호환되는 시스템에서 사용하는 입출력 방식이다. 동시에 데이터를 저장하는 형식을 말한다.2. 특징
파일은 바이트의 나열이다. 이것을 어떻게 해석할지는 프로그램이 결정할 일이다. 단순히 텍스트 파일로 취급할 수 있지만 그것을 프로그램으로 실행하더라도 문제가 되지 않는다. 입출력과 운영체제에 연결된 장치도 파일로 취급되며 운영체제의 입출력 방식을 하나로 통일하는 역할을 한다.유닉스에서 프로그램이 실행되면 3개의 파일이 자동으로 연결되며 표준[1] 입력(stdin)은 키보드, 표준 출력(stdout)과 표준 에러(stderr)는 터미널로 연결된다.
3. 파이프
프로그램이 터미널에 출력을 내보내는 대신에 다른 프로그램의 입력으로 사용할 수 있다. 표준 출력만 가능하며 기본적으로 표준 에러는 연결되지 않고 터미널에 바로 출력된다.파이프는 한 가지 목적을 수행하는 프로그램 다수를 연결시킬 수 있다. 다음은 셸에서 특수한 목적으로 사용되는 심볼이다. 내부적으로 처리되기 때문에 프로그램에 문자가 실제로 전달되지는 않는다.
- | : 이전 명령어의 실행 결과를 다음 명령어로 전달된다.
- && : 이전 명령어가 정상적으로 실행되었을 때만 결과를 다음 명령어로 전달한다. 예를 들어 업데이트를 정상적으로 받아왔을 때만 시스템 업그레이드를 수행하도록 지시할 수 있다.
#!if (문단 == null) == (앵커 == null)
를
#!if 문단 != null & 앵커 == null
의 [[파이프(UNIX)#s-|]]번 문단을
#!if 문단 == null & 앵커 != null
의 [[파이프(UNIX)#|]][[파이프(UNIX)#|]] 부분을
참고하십시오.3.1. 방향변경
표준 입력이나 출력을 실제 저장장치의 파일로 연결시킬 수 있다.- < : 저장소에 위치한 파일의 내용을 셸에 연결한다.
- \> : 프로그램의 실행 결과를 저장소의 파일에 저장한다. 만약 두번 이상 기록했다면 마지막 실행 결과를 제외한 모든 내용이 소실된다.
- \>> : 위와 비슷한 작업을 하지만 원본의 내용이 소실되지 않고 뒤쪽으로 덧붙혀진다.
이 심볼들은 여러 개의 파일을 대상으로 할 수 없다. 만약 여러 파일의 내용을 출력해야 한다면 CAT 명령어를 사용할 수 있다.
4. 파일 제어 함수
4.1. 저수준 파일 제어
open, close, creat, read, write등, 유닉스 계통 운영체체에서 제공하는 시스템 호출중의 한 종류이다. 파일의 생성과 삭제, 수정과 읽기 및 쓰기등의 기초적인 파일 관리 기능들을 제공한다. 보통 파일의 경로나 이름을 이용하여 작업하지만 프로그램에서 파일을 새로 생성하거나 수정할 때는 파일 기술자라고 불리는 특수한 정수값을 이용한다. 0, 1, 2번은 표준 입출력을 위해 예약되어 있으며 3번부터 사용된다.일반적인 상식과는 별개로 열린 파일이 반드시 디스크의 실제 파일과 연결될 필요는 없다. 용어가 충돌하기 때문인데 실제 디스크에 저장되는 데이터 집합은 파일으로, 프로그램에서 사용하는 데이터 집합은 스트림으로 구분해서 혼동을 방지하기도 한다. 그러나 이런 오해가 발생한 이유는 의도된 것인데 원래 유닉스는 단일, 통일성을 가지도록 설계되어 시스템 전체가 단 하나의 자료 구조만을 사용하기 때문이다. 그래서 프로그램에 파일의 내용과 스트림이 바뀌어서 전달되어도(원래는 스트림을 받지만 파일의 내용을 전달했을 경우) 동작에 문제가 생기는 일이 없다.
#!syntax cpp
int creat(char *name, int flag);
int rename(char *bname, char *aname);
int unlink(char *name);
int open(char *name, int flag);
int open(char *name, int flag, int mode);
int close(int fd);
ssize_t read(int fd, void *buf, size_t siz);
ssize_t write(int fd, void *buf, size_t siz);