lseek
파일의 오프셋 지정하는 함수
#include <sys/types.h>
#include <unistd.h>
off_t lseek(int fildes, off_t offset, int whence);
int main(){
lseek(fd, 5, SEEK_SET); //파일의 처음부터 5번째 위치로 이동
}
- fildes : 파일 기술자
- offset : 이동할 오프셋 위치
- whence : 오프셋 기준 위치 (SEEK_SET, SEEK_CUR, SEEK_END)
off_t는 long으로 정의되어 있음
파일을 읽/쓰고 싶은 위치로 옮길 때 사용하면 된다.
dup, dup2
파일 기술자 복사(또는 지정)하는 함수
#include <unistd.h>
int dup(int fildes);
int dup2(int fildes, int fildes2);
int main(){
close(1);
fd1 = dup(fd); //fd1에 1 넣기 (표준 출력)
dup2(fd, 1); //fd에 1 지정해서 넣기
}
- fildes : 파일 기술자
fcntl
열려 있는 파일에 대한 파일 기술자의 속성 확인, 제어하는 함수
#include <sys/types.h>
#include <fcntl.h>
#include <unistd.h>
int fcntl(int fildes, int cmd, /* arg */...);
int main(){
flags |= O_APPEND; //flag에 append 추가
fcntl(fd,F_SETFL, flags); //flag 재설정
}
- fildes: 파일 기술자
- cmd : 명령 (F_GETFL, F_SETFL (설정할 flag를 인자로 줘야 함))
- arg : cmd에 따라 필요시 지정하는 인자들
항상 fcntl 결과와 O_ACCMODE 와 & 연산을 해서 검증하고 진행하기!
O_APPEND는 readonly 상태일 때 추가해주면 에러가 남
fsync
파일, 디스크 동기화 해주는 함수
#include <unistd.h>
int fsync(int fildes);