. 과 .. 은 모든 디렉터리에 항상 존재하는 파일 이름이다. 디렉토리가 생성될 때 자동적으로 포함됨.
pathname
: 정보를 알고자 하는 파일 명
statbuf
: 검색한 파일 정보를 저장할 구조체 주소
pathname에 지정한 파일의 정보를 검색
stat() 함수로 파일의 정보를 검색할 때 파일에 대한 읽기/쓰기/실행 권한이 반드시 있어야 하는 것은 아니지만 파일에 이르는 경로의 각 디렉터리에 대한 읽기 권한을 있어야함
성공하면 0을 반환하고 stat 구조체에 파일 정보를 저장, 오류 발생 시 -1 리턴
새로운 파일을 만들면 default link수는 1.
link 수 == 0 -> 삭제
'>' 하나 : overwrite
'>>' 두개 : append
ex) ls -al > text.txt 이렇게 하면 ls -al의 내용이 text.txt에 들어감.
ls -al >> text.txt 하면 본래 text.txt에 써져있던 것에 덧붙여서 더해짐.
fd
: 열려 있는 파일의 파일 기술자statbuf
: 검색한 파일 정보를 저장할 구조체 주소파일 경로 대신 현재 열려 있는 파일의 파일 기술자를 인자로 받아 파일 정보를 검색한 후 statbuf 로 지정한 구조체에 저장
chmod로 변경 가능.
r w x
파일의 소유자는 사용자 식별번호로 구별
chmod u+s test.txt를 하면
-r-S-r-xr-x 와 같이 S가 생김. 이는 다른 사용자도 이걸 읽을 수 있다.
이미 x가 있는데 +s를 하면 s가 생김.
uid와 gid, sticky bit를 설정하려면 이미 적용되있는 권한(ex: 755) + uid상수(04000) = 4755 이런식으로 해야댐. chmod 4755.
/ --S / --S / --T/
uid gid sticky bit
유효 사용자 식별번호 (effective user-id, euid)
파일에 대해 실제 소유권을 갖는 사용자의 사용자 식별번호 root(루트) 가 여기에 속함.
진짜 사용자 식별번호 (real user-id, ruid)
실제로 프로세스를 갖는 사용자의 사용자 식별번호
유효 그룹 식별번호, 진짜 그룹 식별번호
대부분의 경우, 유효 사용자 식별번호와 진짜 사용자 식별번호는 동일
set user-id(04000)
생성된 프로세스에게 그 프로세스를 시작시킨 사용자의 uid대신 파일 소유자의 유 효 사용자 식별번호를 부여
set group-id(02000)
sticky bit(01000)
공유디렉토리(/tmp)에 대한 접근 권한 OR 텍스트-이미지를 swap영역에 남겨둠
상수와 & 명령을 해주면 혹시 1이 나올 경우 0으로 .. 바꿔줌.
kind = statbuf.st_mode & S_IFMT;
이런식으로..
매크로를 사용하게 되면 소스 파일이 확대되게 만들어줌. 오버헤드가 없음.
짧은 코드의 경우 매크로를 사용한다.