fflush 는 그냥 C 표준 함수이고, fsync는 posix 표준이라는 것이 가장 큰 차이 아닐까요?
아마도, 리눅스와 같은 posix를 따르는 OS에서는 fflush가 fsync를 사용해서 구현이 되어 있을 것 같고요.
사용가능한 범위 내에서 가장 일반적인 표준을 사용하는 것이 코드 호환성에서 좋겠죠.
즉, fflush는 linux 및 windows에서 사용 할 수 있지만 fsync는 linux에서만 사용 가능하겠죠.
->flush는 close(2)마다 호출되고 ->fsync는 fsync(2)할 때 호출됩니다. 둘은 별 상관은 없고 ->flush는 필요하지 않은 경우도 많이 있구요. ->open과 ->flush가 1:1 대응이고, 마지막 ->flush후에 ->release가 호출됩니다. 그냥 코드 보시라능;;;
fflush 는 그냥 C 표준
fflush 는 그냥 C 표준 함수이고, fsync는 posix 표준이라는 것이 가장 큰 차이 아닐까요?
아마도, 리눅스와 같은 posix를 따르는 OS에서는 fflush가 fsync를 사용해서 구현이 되어 있을 것 같고요.
사용가능한 범위 내에서 가장 일반적인 표준을 사용하는 것이 코드 호환성에서 좋겠죠.
즉, fflush는 linux 및 windows에서 사용 할 수 있지만 fsync는 linux에서만 사용 가능하겠죠.
덧붙이면,
fflush는 stdlib내의 user space buffer의 내용을 (kernel로) 내려버리는 역할을 하고요,
fsync는 kernel내의 buffer를 device (또는 device driver)로 내려버리는 역할을 합니다.
->flush는 close(2)마다
->flush는 close(2)마다 호출되고 ->fsync는 fsync(2)할 때 호출됩니다. 둘은 별 상관은 없고 ->flush는 필요하지 않은 경우도 많이 있구요. ->open과 ->flush가 1:1 대응이고, 마지막 ->flush후에 ->release가 호출됩니다. 그냥 코드 보시라능;;;
댓글 달기