현재 파일에 많은 수의 바이트 쓰기를 처리해야하는 프로젝트가 진행 중입니다. 저수준 C 함수 write(int, const void *, size_t)
을 사용합니다. 한 번에 바이트를 많이 처리하기 위해, 나는 시스템에 의해 주어진 것 블록 크기의 블록으로 데이터를 분할 :C 언어로 파일에 블록 단위로 쓰기 처리
struct stat b_stat;
stat("/", &b_stat);
blksize_t block_size = b_stat.st_blksize;
이 프로젝트는 중요한 데이터를 관리, 그래서 모든 오류를 확인해야합니다. 내 문제는, 내가 글쓰기 과정의 중간에있을 때 어떻게 진행해야 하나의 블록이 에러를 던지게된다는 것이다. 이전 데이터는 이미 파일에 쓰여지고 저수준 C 함수는 "실행 취소"기능과 같은 것을 포함하지 않습니다.
사례의 사례에서 어떻게 진행해야하는지 알고 계십니까?
아마도 그렇게 많이 신경 쓸 필요가 없습니다. 디스크 I/O가 매우 느립니다. CPU. 어떤 데이터를 처리하고 있으며, 파일을 구성하는 방법과 운영 체제 및 파일 시스템을 설명하지는 않습니다. 순차적으로 작성하지 않으면 [sqlite] (http://sqlite.org/), [gdbm] (http://www.gnu.org.ua/software/gdbm/) 또는 데이터베이스를 고려 했습니까? [mongodb] (http://www.mongodb.org/) 또는 [postgresql] (http://postgresql.org/)과 같은 –
사실, 루트 디렉토리'/'를 쓰지 말고, 쓰고있는 파일이 들어있는 디렉토리 (또는 쓰여진 파일 자체)를'stat'해서는 안됩니다. 그들은 아마 다른 파일 시스템에있을 것입니다! –