본문 바로가기

C

[시스템프로그래밍] ls, file과 directory

지난 시간 까지는 file에 (open, read, write, lseek, close) 대한걸 배웠습니다. 이번에는 ls 명령어를 배우면서 파일의 속성과 디렉토리에 대해 공부합니다

 

이제 본격적으로 시스템 호출 API에 대해 살펴보기 시작합니다. 파일은 UNIX 철학의 중심이므로 시작하기에 좋습니다.

라고 책 원문에 적혀있는 걸 확인했습니당.

 

file descriptor

I/O 시스템에서 쓰이며, 커널에서 식별하기 위한 작은 정수(0,1,2)이다. 

 

directory

모든 시작은 root 폴더 '/'

dir은 비어있지 않음. 무조건 '.'과 '..'을 가짐

. : 현재 디렉토리

.. : 상위 디렉토리

 

? 그럼 최상위 폴더인 root에도 ..이 있을까?

더보기

실습해본 결과 있음!

그 이유는 일관성을 유지하기 위한 디자인 패턴 때문임.

..는 부모폴더를 가리키지만 최상위 폴더인 root에서는 그냥 현재 자신을 나타낸다고 함.

https://dana-study-log.tistory.com/entry/Linux-%EB%A6%AC%EB%88%85%EC%8A%A4-%ED%8C%8C%EC%9D%BC-%EC%8B%9C%EC%8A%A4%ED%85%9C-%EA%B5%AC%EC%A1%B0-%EB%A3%A8%ED%8A%B8-%EB%94%94%EB%A0%89%ED%86%A0%EB%A6%AC-%ED%99%88-%EB%94%94%EB%A0%89%ED%86%A0%EB%A6%AC

(리눅스 파일 시스템 정리 잘 되어있는 링크입니다)

 

ls란?

현재 디렉토리에 있는 파일을 알려주는 명령어.



-l 옵션을 붙이면 파일의 속성을 함께 알려줌

mode, links, 그룹, owner, size, 수정시각, filename

(맨 앞에 -는 file, d는 directory를 나타냄)

Example Action
ls /tmp /tmp 디렉토리에 있는 파일 목록을 보여줌
ls -l docs 현재 디렉토리에 docs 파일이 있는지 정보와 함께 알려줌
ls -l ../Makefile 이전 디렉토리에 Makefile있는지 정보와 함께 알려줌
ls *.c .c 파일 목록을 보여줌
Command Action
ls -a shows "." files
ls -lu shows last-read time
ls -s shows size in blocks
ls -t sort in time order
ls -F shoes file types

ls 작동 원리

open directory -> read entry -> display file info -> close directory

 

<unistd.h>

파일 read, write, close

 

<fcntl.h>

파일 open,  create

 

<sys.stat.h>

파일에 대한 정보를 얻을 수 있음

 

코드에서

DIR *dir_ptr; 은 the directory를 나타내고

struct dirent *direntp; 는 each entry를 나타낸다.

 

 

special bits

UNIX 시스템은 파일에 대한 접근 권한과 종류를 나타내기 위해 16bit를 사용

파일타입 / 특수권한 / 파일권한

ex) 68 -rwsr-xr-x

파일종류

file(-), directory(d), device file(b), socket(s), symbolic link(l), pipe(p)

 

권한종류

r: 읽기 권한

w: 쓰기 권한

x: execute 권한

 

특수권한

- Set-User-Id bit : 4, 일시적으로 root권한으로 실행 (예시: usr/bin/passwd)

- Set-Group-ID bit : 2, 일시적으로 파일 소유 그룹의 권한으로 실행

- Sticky bit : 1, 생성한 사람의 소유

 

gdb란?

C나 C++ 등으로 쓰여진 프로그램을 디버깅할 수 있는 디버거

쉘에서 gdb GDB 시작하면 quit 종료명령을 주기전까지는 터미널로부터 명령라인을 읽어 들인다.

실행중인 프로그램