지난 시간 까지는 file에 (open, read, write, lseek, close) 대한걸 배웠습니다. 이번에는 ls 명령어를 배우면서 파일의 속성과 디렉토리에 대해 공부합니다
이제 본격적으로 시스템 호출 API에 대해 살펴보기 시작합니다. 파일은 UNIX 철학의 중심이므로 시작하기에 좋습니다.
라고 책 원문에 적혀있는 걸 확인했습니당.
file descriptor
I/O 시스템에서 쓰이며, 커널에서 식별하기 위한 작은 정수(0,1,2)이다.

directory
모든 시작은 root 폴더 '/'
dir은 비어있지 않음. 무조건 '.'과 '..'을 가짐
. : 현재 디렉토리
.. : 상위 디렉토리
? 그럼 최상위 폴더인 root에도 ..이 있을까?
실습해본 결과 있음!

그 이유는 일관성을 유지하기 위한 디자인 패턴 때문임.
..는 부모폴더를 가리키지만 최상위 폴더인 root에서는 그냥 현재 자신을 나타낸다고 함.
(리눅스 파일 시스템 정리 잘 되어있는 링크입니다)
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로 종료명령을 주기전까지는 터미널로부터 명령라인을 읽어 들인다.
실행중인 프로그램
'C' 카테고리의 다른 글
[시스템프로그래밍] du 구현하기 (0) | 2023.10.17 |
---|---|
[시스템프로그래밍] who, cp, buffering (0) | 2023.10.11 |
[시스템프로그래밍] ssh, sftp, 커널과 셸 (2) | 2023.10.10 |
[시스템프로그래밍] 가상화, 리눅스, WSL2와 Ubuntu 차이 (0) | 2023.10.10 |
[자료구조] 불완전한 형식은 사용할 수 없습니다 오류 해결 | typedef (4) | 2023.05.17 |