fsync 또는 fsync_range 서브루틴
용도
파일의 변경사항을 영구 스토리지에 기록합니다.
라이브러리
표준 C 라이브러리(libc.a)
구문
#include <unistd.h>
int fsync ( FileDescriptor)
int FileDescriptor;
int fsync_range (FileDescriptor, how, start, length)
int FileDescriptor;
int how;
off_t start;
off_t length;
설명
Fsync 하위 루틴은 FileDescriptor 매개변수로 지정된 열린 파일의 모든 수정된 데이터를 영구 저장소에 저장합니다. Fsync 서브루틴에서 돌아오면 모든 업데이트가 영구 저장소에 저장됩니다.
Fsync_range 하위 루틴은 FileDescriptor 매개변수로 지정된 열린 파일의 지정된 범위에서 수정된 모든 데이터를 영구 저장소에 저장합니다. Fsync_range 서브루틴에서 돌아오면 지정된 범위의 모든 업데이트가 영구 저장소에 저장됩니다.
이 단락은 JFS 파일 시스템에서만 사용할 수 있는 더 이상 사용되지 않는 기능에 대해 설명합니다. 프로세스가 지연 업데이트를 위해 연 파일( O_DEFER 플래그 사용)에 쓴 데이터는 다른 프로세스가 이 파일에 대해 fsync_range 또는 fsync 호출을 실행하거나 이 파일에서 동기식 쓰기 하위 루틴( O_SYNC 플래그 사용)을 실행할 때까지 영구 저장소에 쓰이지 않습니다. O_DEFER 및 O_SYNC 플래그에 대한 설명은 각각 fcntl.h 파일과 오픈 서브루틴을 참조하세요.
매개변수
| 항목 | 설명 |
|---|---|
| FileDescriptor | 유효한 오픈 파일 디스크립터입니다. |
| 방법 | 작업의 처리 특성을 지정합니다.
|
| 시작 | 파일 오프셋 시작. |
| 길이 | 길이, 또는 모든 캐시 데이터의 경우 0입니다. |
리턴 값
성공적으로 완료되면 fsync 서브루틴은 0 값을 반환합니다. 그렇지 않으면 -1 값이 반환되고 errno 전역 변수가 오류를 나타내도록 설정됩니다.
성공적으로 완료되면 fsync_range 서브루틴은 0 값을 반환합니다. 그렇지 않으면 -1 값이 반환되고 errno 전역 변수가 오류를 나타내도록 설정됩니다.
오류 코드
다음 중 하나 이상에 해당하면 fsync 또는 fsync_range 서브루틴이 실패합니다:
| 항목 | 설명 |
|---|---|
| EIO | 파일 시스템에서 읽거나 쓰는 동안 I/O 오류가 발생했습니다. |
| EBADF | FileDescriptor 매개변수가 쓰기 위해 열려 있는 유효한 파일 설명자가 아닙니다. |
| EINVAL | 파일이 일반 파일이 아닙니다. |
| EINTR | 서브루틴이 신호에 의해 중단되었습니다. |