리눅스에 링크는 심볼릭링크와 하드링크 두 가지가 있다.
먼저 심볼릭 링크는 간단하게 윈도우즈에서의 바로가기라고 생각하면 된다.
ln -s 원본파일이름 링크파일이름
[gate@localhost iyounges.org]$ ls
iyounges
[gate@localhost iyounges.org]$ ln -s iyounges iyounges_
[gate@localhost iyounges.org]$ ls -l
total 0
-rw-rw-r-- 1 gate gate 0 Aug 20 02:55 iyounges
lrwxrwxrwx 1 gate gate 8 Aug 20 03:06 iyounges_ -> iyounges
이처럼 사용해주면 된다. 그런데 심볼릭 링크는 단지 바로가기 일뿐, 파일 안은 텅텅 비어있으며
심볼릭 링크가 걸어진 파일을 수정한다해도 원본파일은 수정되지 않는다.
그 이유는 inode 라는 고유번호를 서로 공유하지 않기 때문이다. inode 는 운영체제가 파일을 구별하기 위해 부여한것인데
예를 들면 고정 아이피라고 생각하면 쉽게 이해될듯 하다.
두번째, 하드링크는 심볼릭 링크와 똑같은 의미인데 단 inode 를 공유하기 때문에
하드링크에서 파일을 수정하면 원본 파일 또한 수정된다.
ln 원본파일이름 링크파일이름
[gate@localhost iyounges.org]$ ln iyounges iyounges__
[gate@localhost iyounges.org]$ ls
iyounges iyounges__
[gate@localhost iyounges.org]$ ls -l
total 0
-rw-rw-r-- 2 gate gate 0 Aug 20 02:55 iyounges
-rw-rw-r-- 2 gate gate 0 Aug 20 02:55 iyounges__
단, 주의해야할것은 원본파일이 삭제된다면 링크가 걸어진 파일은 아무 쓸모가 없으니 주의해야한다.
마치 윈도우즈에서 바로가기를 실행했을때 원본파일을 찾을수 없다면서 뜨는 메세지처럼 된다고 생각하면 된다.
'스터디 > system' 카테고리의 다른 글
Stack Frame Pointer Overflow - 프레임 포인터 오버플로우 (0) | 2011.09.04 |
---|---|
[Chapter 1] 리눅스 시스템 프로그래밍 시작 (0) | 2011.08.21 |
리눅스 GDB 어셈블리어 AT&T 문법을 intel 문법으로 바꾸는 방법 //AT&T -> INTEL (0) | 2011.08.20 |
[GDB-Analysis] GDB 바이너리 디버깅 3 (0) | 2011.08.18 |
[GDB-Analysis] GDB 바이너리 디버깅 2 (0) | 2011.08.17 |