inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

리눅스 시스템 프로그래밍 - 이론과 실습

하드링크와 소프트링크 - 라이브 프로그래밍

하드링크 및 소프트링크 관련 질문드립니다.

159

꿀렁꿀렁

작성한 질문수 11

1

안녕하세요.

원본파일 hello 와 하드링크 파일인 hard 그리고 소프트링크 파일인 soft 가 존재하는 상황에서

원본파일인 hello 파일을 삭제했다고 가정합니다.

여기서 의문점이 하나 생겼는데, hello 가 지워졌다고 하더라도, hard 에 의해서 원본 데이터는 디스크상에 보존이 되고 soft 의 inode 값은 별도로 관리가 되는데,

이런 경우 원본파일이 삭제되더라고 soft 파일은 디스크상의 파일을 가리켜야 하는게 맞지 않는건가요~?

답변 부탁드립니다. 감사합니다~

linux

답변 1

0

런잇(ProgCoach4U)

소프트링크 파일은 대상 파일의 inode를 가리키고 있는 것이 아니라 대상 파일의 경로를 저장하고 있습니다. 따라서 soft 파일이 "hello"를 가리키고 있었는지, "hard"를 가리키고 있었는지에 따라 다른 상황이 연출됩니다.

soft가 "hello"를 가리키고 있는 상태에서 "hello"를 삭제하면 soft 파일은 존재하지 않는 파일을 가리키고 있는 상태가 됩니다. 이 경우 "hard" 파일은 그대로 남아있으므로 "hard"의 내용은 디스크에 그대로 저장되어 있습니다.

soft가 "hard"를 가리키고 있는 상태에서 "hello"를 삭제하면 soft는 그대로 "hard"를 가리키고 있는 정상 소프트링크 파일로 남아있습니다(변화가 없죠). 역시 "hard"파일이 그대로 남아있기 때문에 "hard"의 내용은 디스크에 그대로 저장되어 있습니다.

아마도 소프트링크가 대상 파일의 inode를 가리키고 있다고 잘못이해하신 부분 때문에 생긴 궁금증이 아닐까 싶네요. 추가 질문 있으시면 게시판에 남겨주세요~ :)

inotify 객체에 등록된 watch descriptor 해제 관련 질문

0

29

2

select API 실습 코드 질문

0

34

2

wsl에서 fcntl사용

0

71

2

inotify_event 구조체 질문 [파일 이벤트 - 라이브 프로그래밍]에서...

0

178

2

./stat 파일이름

0

272

2

fopen r, r+모드 차이

0

459

2

강의를 모두 수강하고 스스로 구현하면 좋을 과제나 프로젝트 주제가 있을까요?

0

325

1

pthread 질문

0

419

2

I/O Multiplexing(select) 질문

0

323

1

inotify.c. ret 질문

0

300

1

inotify.c 질의합니다.

1

316

1

child process

0

714

1

read/blocking

0

563

1

flock

0

563

1

system call

0

595

1

pthread_create() 함수 이용했을 때, thread가 두번 호출되는 것 처럼 나타납니다. 왜 그런것인가요?

0

487

1

fork() 함수 사용시 결과 관련 질문

0

370

1

exec 관련 궁금한 사항

0

450

2

파일 디스크립터와 FILE 구조체에 대한 질문

0

551

1

buf 선언에 따른 read() fail 문제

0

250

2

파일 이벤트 - 라이브 프로그래밍 에서 캐스팅 질문

0

251

1

2번 multi thread 방법 질문

0

241

1

segmentation fault 발생 관련 문의

1

837

1

라이브 코딩 실습 코드

0

230

1