ftruncate 예제

성공적으로 완료되면 fildes가 일반 파일을 참조하면 ftruncate() 함수는 파일의 st_ctime 및 st_mtime 필드를 업데이트하기 위해 표시해야 하며 파일 모드의 S_ISUID 및 S_ISGID 비트가 지워질 수 있습니다. ftruncate() 함수가 실패하면 파일은 영향을 받지 않습니다. #include int ftruncate (int fildes, off_t 길이); fildes가 디렉터리를 참조하면 ftruncate()가 실패합니다. ftruncate() 함수는 Truncate()보다 더 유용한 것으로 간주되었기 때문에 IEEE Std 1003.1-2001의 일부입니다. truncate() 함수는 XSI 확장으로 제공됩니다. 이전에 파일이 길이보다 크면 추가 데이터가 삭제됩니다. 이전에 길이보다 짧은 경우 파일이 변경되었는지 또는 크기가 증가했는지 여부를 지정하지 않습니다. 파일이 확장되면 확장 영역이 0가득 것처럼 나타납니다. fildes가 공유 메모리 개체를 참조하는 경우 ftruncate()는 공유 메모리 개체의 크기를 길이로 설정합니다.

파일이 일반 파일이나 공유 메모리 개체가 아닌 경우 결과가 지정되지 않습니다. [MF| SHM] ftruncate()의 효과가 공유 메모리 개체 또는 메모리 매핑된 파일의 크기를 줄이는 것이고 새 끝을 벗어난 전체 페이지가 이전에 매핑된 경우 새 끝을 벗어난 전체 페이지는 삭제됩니다. [MF| SHM] ftruncate()의 효과가 공유 메모리 개체의 크기를 늘리는 경우 이전 파일 끝과 새 페이지 사이의 매핑된 페이지의 내용이 기본 개체로 플러시되는지 여부는 지정되지 않습니다. 원래 Linux truncate() 및 ftruncate() 시스템 호출은 큰 파일 오프셋을 처리하도록 설계되지 않았습니다. 따라서 Linux 2.4는 대용량 파일을 처리하는 truncate64() 및 ftruncate64() 시스템 호출을 추가했습니다. 그러나 이러한 세부 정보는 glibc를 사용하는 응용 프로그램에서 무시할 수 있으며, 래퍼 함수는 사용 가능한 최신 시스템 호출을 투명하게 사용합니다. glibc 2.12의 헤더 파일 버그는 ftruncate() 선언을 노출하는 데 필요한 _POSIX_C_SOURCE의 최소 값이 200112L 대신 200809L임을 의미합니다. 이 수정 된 이후 glibc 버전에서 해결 되었습니다. fildes가 쓰기위해 열려 있는 유효한 파일 설명자가 아닌 경우 ftruncate() 함수가 실패합니다.

[SHM] fildes가 공유 메모리 개체를 참조하는 경우 ftruncate()는 공유 메모리 개체의 크기를 길이로 설정합니다. 위의 설명은 XSI 호환 시스템에 대한 설명입니다. XSI를 준수하지 않는 시스템의 경우 POSIX 표준은 길이가 파일 길이를 초과할 때 ftruncate()에 대한 두 가지 동작을 허용합니다(이러한 환경에서 truncate()이 전혀 지정되지 않음): 오류를 반환하거나 파일을 확장합니다. int 트렁킨(const char *path, off_t 길이); int ftruncate (int fd, off_t 길이); 대부분의 유닉스 구현과 마찬가지로 Linux는 네이티브 파일 시스템을 처리할 때 XSI 요구 사항을 따릅니다.

Uncategorized