Presentation is loading. Please wait.

Presentation is loading. Please wait.

File I/O, TCP, Serial 입니다. 죄송합니다 ㅠ_ㅠ

Similar presentations


Presentation on theme: "File I/O, TCP, Serial 입니다. 죄송합니다 ㅠ_ㅠ"— Presentation transcript:

1 File I/O, TCP, Serial 입니다. 죄송합니다 ㅠ_ㅠ
Linux에서의… File I/O, TCP, Serial 입니다. 죄송합니다 ㅠ_ㅠ

2 File I/O Linux에서는 모든 것을 파일로 처리합니다. 그래서 이건 중요합니다.
이것만 잘 해도 뒤에 TCP, Serial 이런 거 그냥 파일 입출력처럼 해버리면 됩니다. 사실 C의 File I/O와 비슷합니다. 어찌보면 그놈이 그놈입니다. 서론이 길었군요….

3 파일 디스크립터(File Descriptor)
시스템으로부터 할당받은 파일이나 소켓을 대표하는 정수입니다. 일종의 번호표 입니다. 0,1,2번은 이미 정해져 있습니다. 그래서 3번부터 붙습니다. 무슨 소린지 헷깔립니다. 일단 예제를 보시죠

4 함수와 인자에 대해서는 나중에 자세히 설명 할께요.
우선 fdes1 에는 소켓 생성할 때받은 파일 디스크립터 번호가 들어가구요 fdes2에는 test.dat이라는 파일을 생성하고 여는데 받은 파일 디스크립터 번호가 들어갑니다. Fdes3은 역시 소켓… 자자!!! 우리의 리눅스는 전부 파일로 처리해서 소켓이든 파일이든!! 일단 파일로 생각하고 순서대로 번호표를 붙입니다~

5 파일 디스크립터 0, 1, 2의 의미 방금 전의 예제에서 보셨듯이 3번부터 붙습니다. 이제 0, 1, 2가 뭔지 설명하죠
0 : 표준 입력 – Standard Input 1 : 표준 출력 – Standard Output 2 : 표준 에러 출력 : Standard Error 제 눈에는 Standard가 Starcraft로 보여 흠짓 합니다 -_-;;

6 잠깐 쉬면서 정리 파일 디스크립터에 대한 개념이 조금 잡히시나요? 저는 사실 이게 어디에 활용될지 모르겠습니다 -_-;;
이걸 윈도우에서는 핸들이라고 하네요 저는 사실 이게 어디에 활용될지 모르겠습니다 -_-;; 단지 시스템이 편하다는 것 말고는…

7 여러 함수들 기존의 파일 입출력에서 다른 생소한 것을 무사히 처리하셨습니다.
기존의 파일 입출력에서 다른 생소한 것을 무사히 처리하셨습니다. 이제부터 익숙한 open(), close() 등을 설명하겠습니다. C에서 이미 배워 다 아는걸 왜 하냐구요? 저는 fflush(myBrainBuffer); 이 함수가 자꾸 작동돼서요. 무한반복 해야되요.

8 open() 성공시 0, 실패시 -1리턴 필요할 것 같은 헤더파일 #include <fcntl.h>
#include <sys/types.h> #include <sys/stat.h> 함수 int open(const char *path, int flag); const char *path : 파일의 경로인 문자열 int flag : 여러가지 파일 여는 방식.

9 앞의 int flag에 대해 자세히 사실 필요 할 때마다 찾아보면 됩니다. 그래도 없으면 무책임해 보이니까… -_-
O_CREAT : 파일 없으면 생성 O_TRUNC : 이미 있던 데이터 싹 지우고 파일 염 O_APPEND : 이미 있던 데이터 뒤에서 부터… O_RDONLY : 읽기 전용으로 열어드립니다~ O_WRONLY : 쓰기 전용으로 염 O_RDWR : 읽고 쓰고 다됨 ㅋ

10 close() 성공시 0, 실패시 -1리턴 필요한 헤더파일 #include <unistd.h> 함수
int close(int fildes); int fildes : 닫아줄 파일의 파일 디스크립터 오호라 여기에 쓰이는군요! C에서는 여기에 파일포인터가 들어간 거 같은데 ㅋ

11 write() 성공 시 전달 한 바이트 수, 실패 시 -1 리턴
헤더파일 #include <unistd.h> 이거 하나 함수 선언(ssize_t 자료형에 대해서는 뒤에 ㅋ) ssize_t write(int fildes, const void *buf, size_t nbytes) int fildes : 데이터 전송을 어디로 할지 정하는 파일 디스크립터 const void *buf : 전송할 데이터가 있는 주소 size_t nbytes : 전송할 데이터의 바이트 수

12 read() 성공 시 전달 한 바이트 수, 또는 EOF 만나면 0 실패 시 -1 리턴
헤더파일 #include <unistd.h> 이거 하나 함수 선언(ssize_t 자료형에 대해서는 뒤에 ㅋ) ssize_t read(int fildes, const void *buf, size_t nbytes) int fildes : 데이터 전송을 어디서 받을지 정하는 파일 디스크립터 const void *buf : 수신한 데이터를 저장할 변수 주소 size_t nbytes : 수신할 데이터의 최대 바이트 수

13 _t로 끝나는 이상한 자료형들 size_t는 unsigned int 로 정의 되어 있습니다. ssize_t는 그냥 int 입니다. 이렇게 한 이유는 컴퓨터에 따라 자료형의 크기가 달라집니다. 그래서 항상 같은 byte의 자료형을 만들기 위해 이런 것을 씁니다. <sys/types.h>에 선언되어 있습니다.

14


Download ppt "File I/O, TCP, Serial 입니다. 죄송합니다 ㅠ_ㅠ"

Similar presentations


Ads by Google