내가해야 할 일은 전체 파일 내용을 가장 빠른 방법으로 0으로 채우는 것입니다. cp
같은 리눅스 명령을 실제로 한 번에 쓸 수있는 최상의 블록 크기 정보를 얻을 수 있지만이 블록 크기 정보를 사용하여 충분한 경우 좋은 성능을 가지고 있고 모양이 같아서 밖으로 찾을 수 없습니다. st_blksize
stat()
은 그 블록 크기를 제공하지 않습니다. 감사합니다. 코멘트에C에서 전체 파일을 0으로 덮어 쓰는 가장 빠른 방법은 무엇입니까?
일부 답변 :
이 필요성은 조각 같은 유틸리티를 사용하지 않는, C에서 수행한다.
는 내가 그것을 처리 할 수있는 방법을 모르는 파일 크기보다 큰 블록을 반환하는
stat()
st_blksize
의 사용에 오류가 없습니다.은 여분의 공간이 0으로 채워되어 잘라 내기()/ftruncate에서()를 사용하여, 나는 전체 파일 데이터를 덮어 쓰기해야합니다.
내가 좋아하는 뭔가를 생각하고 있어요 :
fd = open("file.txt", O_WRONLY);
// check for errors (...)
while(TRUE)
{
ret = write(fd, buffer, sizeof(buffer));
if (ret == -1) break;
}
close(fd);
문제는 "프로그래밍"최적의 버퍼 크기를 정의하는 방법이다.
'shred -n0 -z _filename_'을 실행하는 것은 어떻습니까? –
stat st_blksize가 찾고있는 번호를 반환하지 않는다고하는 이유는 무엇입니까? 확률은 stat (2) 사용에 버그가있을 수 있으므로 코드를 게시해야합니다. –
[ftruncate] (http://linux.die.net/man/2/truncate)는 어떻습니까?0으로 자른 다음 원하는 크기로 확장하십시오. –