Linux/Linux_programing

리눅스 FILE - System call.

sosal 2009. 9. 27. 06:25
반응형

/*
 * made by so_sal
 *
http://sosal.tistory.com/
 */

※ 파일 다루기

리눅스에서는 모든 것이 파일로 되어 있다.( 약간의 예외를 제외하고 ) 이는 일반적으로 프로그램이 디스크 파일들뿐만 아니라 직렬 포트, 프린터, 그리고 기타 주변장치들을 파일을 사용하는 것과 정확히 동일한 방식으로 사용할 수 있다는 뜻.

특별한 종류의 파일들 예)

디렉터리(Directory) : 디렉터리도 또한 다른 파일들의 inode 번호들과 이름들을 담은 하나의 파일

- inode : 파일은 그 내용 뿐만 아니라 이름과 “관리용 정보”로서의 몇 가지 속성들도 저장되어 있다. 예를 들어 생성/ 수정 일자, 접근 권한, 파일의 길이, 디스크상의 파일의 위치 등.. 이러한 파일의 속성들은 파일의 inode 에 저장된다. 시스템은 파일의 inode의 번호를 사용

/dev/null : 이 파일은 널 장치이다.  ::
빈 파일을 만들거나, 원치 않는 출력이 일어나지 않게 사용 하는 등에 쓰임

ex) cp /dev/null empty_file = 빈파일 생성
ex) find / -perm -4000 2>/dev/null
                   // ftz.hackerschool.org에 멋지게 사용할 수 있는 명령어죠 ^^

저수준 파일 접근( 시스템콜함수를 이용한 파일 접근 )
저수준 파일 접근을 위한 시스템콜함수의 예)

open : 파일이나 장치를 연다.
read : 열린 파일이나 장치에서 자료를 읽는다.
write : 파일이나 장치에 자료를 기록한다.
close : 파일이나 장치를 닫는다.

시스템 호출( system call ) : 운영체제가 제공하는 서비스에 대한 프로그래밍 인터페이스
시스템 호출의 기능

1. 사용자 모드에 있는 응용 프로그램이 커널의 기능을 사용할 수 있도록 하는 것.
2. 시스템 콜을 부르면 사용자 모드에서 커널 모드로 바뀐다.
3. 커널에서 시스템 콜을 처리하면 커널 모드에서 사용자 모드로 바뀌어 작업을 계속한다.

파일 서술자( file descriptor ) : 특정 파일에 접근하기 위한 추상적인 키
프로그램에서 파일이나 장치에 접근하는 데 사용하는 정수 값 ( 자료형 int )

ex) int fp = open(...);

모든 프로세스가 갖추어야 하는, 갖추고 있는 파일 서술자는 다음과 같이 세 개가 있다.

정수값

이름

0

표준 입력( stdin ) /dev/stdin

1

표준 출력( stdout ) /dev/stdout

2

표준 오류( stderr )



#include <unistd.h> // write. read. open. 함수는 unistd.h 헤더파일에 있습니다.

FILE 게시물들은
begining Linux programing.
Linux 언쉬리드' 를 참고하였습니다.