본문 바로가기

세미나/소프트웨어 세미나

[세미나] 6차시 - 리눅스 기초(파일 처리)

반응형

☞ 진행 날짜 : 2022.08.17
☞ 진행자 : 이광진
☞ 기록자 : 야호선종

☞ 준비물 : PC

 

 

 


목차

 1. 파일 처리 함수

 2. 프로세스

 3

 4

 

 

 


 

 

 

 

 

① 파일 처리 함수

 

지난 세미나에서는 구름 IDE에서 제공하는 컨테이너를 이용하여 리눅스에서 사용할 수 있는 기초 명령어를 학습했다. 이번 세미나에는 C 코드를 통해 터미널에서 사용한 명령어를 자동화 할 수 있는 파일 처리 기능들에 대해 배워보도록 하자.

 

 

 

open()

 

세미나 진행자 이광진 PPT 中

 

 

open() 함수는 파일을 열거나 생성할 때 사용하는 함수이다. file control의 줄임말인 fcntl.h 헤더 파일을 통해 사용할 수 있다. 정수형으로 함수를 선언하며 인자로는 filepath, flag, mode 세 가지가 있다.

 

 

 

 

☞ 함수 원형

 

 

◎ filepath : 열고자 하는 파일 경로 

 

◎ flag : 파일을 열 때 사용할 옵션

 

세미나 진행자 이광진 PPT 中

 

 

◎ mode : 파일의 접근 권한

 

파일이나 디렉터리의 접근 권한은 숫자나 문자를 통해 줄 수 있다. 이를 터미널에서 사용할 때는 chmod 라는 명령어로 권한을 부여할 수 있는데 change mode의 줄임말이다. 권한을 부여할 사용자를 분류하고 어떠한 권한을 부여할 것인지도 정할 수 있다.

 

사용자로는 일반 사용자, 그룹 사용자, 그 외의 사용자가 있고, 권한으로는 읽기, 쓰기, 실행으로 각각 세 가지가 있다. 이를 숫자로 부여하거나 문자와 +,-,=를 통해 부여할 수 있는 방법이 있다.

 

만약 권한이 660인 상태라면, 앞자리 부터 한 칸 당 사용자, 그룹 사용자, 그 외의 사용자의 권한 상태를 나타내게 된다. 이는 이진수로 나태내기 때문에 6은 실제로 110(2)을 나타낸다. 즉, 이는 110 110 000을 의미한다. 앞의 110은 일반 사용자의 권한을, 가운데 110은 그룹 사용자의 권한을, 000은 그 외의 사용자 권한을 의미한다. 110은 앞부터 읽기, 쓰기, 실행 권한을 나타내며 1은 권한을 갖고 있고 0은 권한을 갖고 있지 않다는 뜻이 된다.

 

결론적으로 660은 일반 사용자와 그룹 사용자에게 읽기, 쓰기 권한을 부여한다는 의미로 해석할 수 있다.

 

하나의 예를 더들어 777이라면, 111 111 111을 의미하기 때문에 모든 사용자에게 읽기, 쓰기, 실행 권한을 부여하는 것이 된다.

 

 

 

 

 

creat()

 

 

세미나 진행자 이광진 PPT 中

 

 

파일을 만들어주는 함수이다. 인자는 filepath, mode 두 가지를 받아 생성할 파일의 경로와 해당 파일에 접근 권한을 부여할 수 있다. 접근 권한은 네자리 수로 부여할 수 있으며, 기본값이 있어 파일의 경우 0666, 디렉터리의 경우 0777으로 mode 인자에 아무 것도 입력하지 않고 함수를 호출하는 경우에 기본값을 적용하여 파일을 생성할 수 있다.

 

 

터미널에서는 mkdir와 touch 명령어를 통해 파일이나 디렉터리를 생성할 수 있다.

 

 

 

 

☞ 함수 원형

 

 

◎ mode : 파일의 접근 권한

 

세미나 진행자 이광진 PPT 中

 

 

 

앞서 open()에서 설명한 바와 같이 파일에는 접근 권한이 있는데 open() 함수에서는 읽기, 쓰기, 실행 권한만 정할 수 있었고 creat() 함수에서는 사용자 별로 권한을 줄 수 있어 mode 인자에 총 12개 옵션이 있다. 숫자로는 위와 같이 chmod를 통해 권한을 부여할 수 있으며 문자로 권한을 부여하는 방법에 대해서 얘기해보려 한다.

 

 

a : 모든 사용자

u : 사용자

g : 그룹 사용자

o : 그 외의 사용자 

 

r : 읽기

w : 쓰기

x : 실행

 

 

위의 문자를 조합하여 권한을 부여할 수 있는데 이때 권한을 주는 것을 +, 권한을 뺐는 것을 - 로 지정할 수 있다. 예를 들어 그룹 사용자에 읽기와 실행 권한을 부여하려면 g+rx 로 권한을 부여할 수 있으며, 모든 사용자에게 실행 권한을 주려면 a+x 로 줄 수 있다. 이진수로 이루어진 숫자보다는 문자가 간편하기도 하니 이러한 방식으로도 권한을 줄 수 있구나 하면 된다.

 

 

 

※ read() & write()

 

세미나 진행자 이광진 PPT 中

 

 

다른 설명이 필요없이 파일을 읽고, 쓰는 함수로 사용된다.

 

 

 

☞ 함수 원형

 

 

세미나 진행자 이광진 PPT 中

 

 

 

 


② 프로세스

프로세스란?

세미나 진행자 이광진 PPT 中

 

 

프로세스란 컴퓨터에서 연속적으로 실행되는 프로그램을 의미한다. 윈도우 운영체제에서 작업 관리자의 프로세스 탭에서 내 컴퓨터에서 실행되고있는 프로그램을 확인할 수 있다.

 

유닉스 종류에 따라 옵션 표기법이 다양하나 기본적으로 리눅스에서는 터미널 창에서 ps 라는 명령으로 프로세스를 확인할 수 있다. 그리고 대시(-) 없이 ps aux 명령어를 입력하면 컴퓨터에서 실행되고있는 모든 프로그램의 소유자 정보와 CPU 사용량(%CPU), 메모리 사용량(%MEM) 등 다양한 정보를 함께 볼 수 있다.

 

 

 


③ 파일 디스크립터

파일 디스크립터란?

 

세미나 진행자 이광진 PPT 中

 

 

 

우리나라식으로는 파일 서술자또는 파일 기술자라 표현하고, 앞서 배운 read, write 과 같은 함수의 첫 번째 인자이다(FD : File Descriptor). 파일 디스크립터는 프로세스가 실행되고있는 파일에 시스템 콜을 이용하여 접근할 때 참고하는데, POSIX(Portable Operating System Interface X : IEEE가 제정한 유닉스의 API 규격)에 의하면 이를 0이 아닌 양의 정수형(unsigned int)으로 받으며 결론적으로 프로세스에서 열린 파일을 관리하기 위한 인덱스 값을 의미한다.

 

 

 

 

 

 

비밀결사대 앙치킨

 

 

 

 

 

 

 

 

반응형