[완료]linux c언어.. open()을 사용할 때 디스크 데이터블럭 초기화 하는 방법은?

withmelody의 이미지

파일을 오픈할떄 O_TRUNC 플래그를 사용하여 초기화를 할 수 있지 말입니다.

그러나 제 짧은 소견으로는 O_TRUNC는 아마도 inode만을 초기화 시켜 주는것 같네요.

open을 할때에 생성되는 파일이 저장되어있는 물리적 디스크의 블럭영역을 초기화 시켜줄 수는 없을까요?

플래그 하나 추가..였나 간단하게 뭐 하나만 하면 초기화 할수 있다고 들었는데 말입니다..

답변 감사드립니다.

세이군의 이미지

플래그나 간단하게 하는 방법을 찾기 어렵다면 이렇게 해보는 것은 어떨까요?

파일을 O_WRITE|O_TRUNC 모드로 열고나서 fwrite(fp, '0x0', 원하는 만큼);을 하고 난 뒤에 fp를 파일 앞으로 옮겨서 원래 작업을 하는 것은 어떨까 합니다.

withmelody의 이미지

지금 당장 해볼수는 없겠지만 그렇게 하면 될거 같네요!
감사합니다!

ganadist의 이미지

posix엔 해당기능이 없을 것 같고 세이님이 말씀하신 것처럼 별도로 처리하던가, srm같은 외부도구를 사용하는게 어떨까 싶네요.

http://en.wikipedia.org/wiki/Srm_(Unix)

----
데스크탑 프로그래머를 꿈꾸는 임베디드 삽질러

cinsk의 이미지

coreutils에 shred가 포함되어 있습니다.