7. 리눅스시스템 프로그래밍: File I/O

2018. 11. 6. 14:44임베디드sw공학

1, Linux/Unix 안의 모든 것은 파일이다. (또는 파일로써 취급한다. )

1) DIsk-base files

: ex: /bin/ls, hello.c, hello.o

2) Special files - 실제로 존재하는 파일이 아니다.

- Device files

ex) /dev/tty, /dev/ttyS0 <- 시리얼 포트의 연결되는 것들

- System information

ex) /proc/cpuinfo <- CPU 정보,

- Network sockets

- Inter-process facilities, 파이프나 FIFO같은 것들.

 

2, File I/O 개념들

a) File Descriptor

1) I/O 수행을 위한 모든 시스템 호출File Descriptor를 사용하여 open file들을 참조한다. (반환되는 값을 저장하는 데, 그 값은

   작거나, 양수 interger이다.)

2) File Descriptor들은 모든 유형의 open file들을 참조한다. (예로 파이프, FIFO, 소켓, 터미널, 장치들, 그리고 일반 파일들)

 

3) Standard file descriptors - 사용자가 open을 하지않아도 이미 열려있어서 사용할 수 있는 것들. 

ㄱ) 0 - stdin - STDIN_FILENO : 프로그램에 전달되는 키보드 입력 같은 것들.

ㄴ) 1 - stdout - STDOUT_FILENO : 프로그램에서 출려되어 display되는 것들. 

ㄷ) 2 - stderr - STDERR_FILENO : 에러메시지들을 표시할 때.

 

 

b) Opening and Closing files

c) Reading,Writing, and Seeking

 

d) Atomicity and Race condition

- Positional and Vector I/O

 

3, open(2), close(2)

#include <sys/types.h>

#include <stat.h>

#include <fcnt.1>

 

int open( const char *pathname, int flags, mode_t  mode );

int close( int fd );

 

a) 성공한다면 open()은 file desriptor에 integer값을 반환한다.

b) 실패한다면 -1을 반환한다.


4, read(2), write(2)



'임베디드sw공학' 카테고리의 다른 글

9.시그널  (0) 2018.11.27
12 - (3) fork(), execve(), exit(), wait()  (0) 2018.11.20
12 -(2) process create  (0) 2018.11.20
12-(1) Process 의 개요.  (0) 2018.11.20