LISTORY

[윈도우즈 시스템 프로그래밍] 파일 I/O와 디렉터리 컨트롤 본문

IT/윈도우 프로그래밍

[윈도우즈 시스템 프로그래밍] 파일 I/O와 디렉터리 컨트롤

LiStoryTeller 2018. 10. 26. 15:30


뇌를 자극하는 윈도우즈 시스템 프로그래밍 책 관련 유투브 강의 정리이다.


오늘 정리할 내용은 파일 I/O와 디렉터리 컨트롤 부분이다.


YouTube 주소 : 파일 I/O와 디렉터리 컨트롤



파일 I/O와 디렉터리 컨트롤


어느새 18장이다. 18장은 레퍼런스 형태로 제공되는 것이 많다. 그러므로 하나하나 함수에 대해 설명하지는 않겠다.


ANSI

ANSI는 파일 관련(파일 I/O)된 함수들을 제공해준다.

사실 여기서는 제공해주는게 아니라 정의하고 있다는 것이 맞는 표현일 것이다.


실제로 파일 I/O 관련된 ANSI 표준 함수를 쓸 경우, 플랫폼에 관계없이 파일이 생성되고 기타 등등 파일 I/O작업을 할 수 있다.


구성하는 방법

기본적으로 하드웨어가 하나 있고, 이 하드웨어에 윈도우즈, 리눅스, 유닉스 등을 깔 수 있다.


운영체제를 설취한 뒤, 그 위에서 프로그램을 동작시켰다.


예를 들어 파일 생성을 했다 치자. 그럼 이 파일은 하드디스크에 저장이 된다. 


여기서 파일이 저장될때 저장되는 방식, 다시 말해 어떻게 저장할 것인지, 또 어떻게 정의하고 어떻게 구성할 것인지 등등은 파일 시스템에 의존적이다.


파일 시스템은 운영체제에서 구현하고 있는 독립적인 시스템으로, 운영체제의 일부이다.


그렇기 때문에, 우리가 호출할 때 ANSI 표준 함수를 호출하할지라도 실제 파일을 만드는 대상은 운영체제이다.


만일 ANSI 표준 함수를 호출했을 때, 파일이 만들어 지는 과정은 어떻게 될까?


ANSI 표준 함수가 구현되기 이전에 시스템 함수가 완성된다.


시스템 함수는 우리가 공부하는 대다수의 함수로, 시스템, 즉 여기서는 윈도우즈가 제공하는 함수이다.


그렇기에 윈도우즈에서 윈도우즈 기반의 파일을 만드려면 이런이런 함수를 써라 라는 말은 곧 System 함수를 쓰라는 말이 된다.


우리가 파일을 만들기 위해선 이 시스템 함수를 사용해야 한다.



의문점

그렇다면 파일은 ANSI 표준 함수로도 만들 수 있고, 시스템 함수를 사용해서 만들 수도 있다는 것인데, 이 둘의 차이점은 뭘까?


ANSI 표준에서 파일 만드는 함수 호출했을 경우, 이는 내부적으로 \윈도우즈의 시스템 함수를 호출한다.


다시 말하자면 ANSI는 껍데기이다.. 내부적으로 실제 파일을 만드는 것이 아니라 시스템함수를 호출하여 역할을 수행하게 한다.


그러면 이러한 특성들을 생각해볼수있다.


ANSI는 표준이다. 다시 말하자면 윈도우즈가 있고, 리눅스, 유닉스도 있다.


얘네들이 공통으로 제공하는 기능 , 그렇지 않은 기능도 있다.


표준을 만드려면 공통으로 제공하는 기능을 묶어서 제공해야 한다.


즉, 특정 오에스에서 제공하는 독특한 기능은 제공할 수 없다. (표준으로 만들어야 하므로)


다시 말하자면 ANSI 는 모든 운영체제의 가장 대표적인 공통 분모만 함수로 제공한다.


실제 프로젝트 개발 시, 세밀하게 컨트롤 할 필요가 있다. 이럴 경우엔 각각의 운영체제가 제공하는 시스템 함수를 써야한다.













Comments