UNIX 3주차

2022. 3. 27. 01:02·학교수업
반응형

유닉스 커널 -> 하드웨어 운영 및 관리

1. 파일 관리

2. 프로세스 관리

3. 메모리 관리

4. 통신 관리

5. 주변장치 관리

 

시스템 호출 : 커널에 서비스 요청을 위한 프로그래밍 인터페이스 -> API

유닉스에서 파일

- 연속된 바이트의 나열

- 특별한 다른 포맷 X

- 디스크 파일뿐 아니라 외부 장치도 특수 파일 형태로 관리

 

파일을 사용하기 위해 먼저 open() 시스템 호출을 사용

int open(const char* path, int oflag, [mode_t mode]);

-> 파일 열기 성공하면 파일 디스크립터, 실패시 -1 리턴

-> 파일 디스크립터는 열린 파일 번호를 나타냄

 

oflag

- O_RDONLY 읽기모드(read() 호출 가능)

- O_WRONLY 쓰기모드(write() 호출 가능)

- O_RDWR 읽기/쓰기모드(read(), write() 호출 가능)

- O_APPEND : 데이터를 쓰면 파일 끝에 첨부

- O_CREAT : 해당 파일 없는 경우 생성, mode는 생성할 파일의 사용 권한

- O_EXCL : 해당 파일이 있다면 에러내고 실행X

 

open하고 쓰고 다 쓴다음 close()하기

 

파일 생성 : creat()

- path가 나타내는 파일을 생성 및 쓰기 전용으로 연다.

- 생성된 파일의 사용권한은 mode로 정한다.

- 기존 파일이 존재한다면 파일 내용 삭제 후 연다.

- open(path, WRONLY|O_CREAT|O_TRUNC, mode);와 동일

int creat (const char* path, mode_t mode);

 

파일 닫기 : close()

int close(int fd)

성공 0 실패 -1

 

read() 시스템 호출

- fd가 나타내는 파일에서 nbytes만큼 데이터 읽어 읽은 데이터를 buf에 저장

ssize_t read(int fd, void *buf, size_t nbytes);

-> 성공(읽은 바이트 수), 파일 끝 만나면(0), 실패(-1)

rw-r--r-- : owner group others

mode 값의 표현

rw- -> 110 -> 6

r-- -> 100 -> 4

r-- -> 100 -> 4

mode -> 0644(앞에 0을 붙여줌)

 

write() 시스템 호출

ssize_t write (int fd, void *buf, size_t nbytes);

- 파일 쓰기 성공 : 실제 쓰여진 바이트 수, 실패 시 -1 반환

 

diff file1 file2 -> 파일의 크기의 다른 부분이 있나 확인

-> 아무것도 안나오면 없는것

 

파일 디스크립터 복제

int dup(int oldfd); -> oldfd에 대한복제본인 새로운 파일 디스크립터를 생성하여 반환, 실패시 -1

int dup2(int oldfd, int newfd); -> oldfd를 newfd에 복제, 복제된 새로운 파일 디스크립터 반환, 실패시 -1

- oldfd와 새로운 디스크립터는 하나의 파일을 공유

파일 위치 포인터

-> 파일 내에 읽거나 쓸 현재 파일내 위치를 가리킴

 

파일 위치 포인터 이동 : lseek()

off_t lseek(int fd, off_t offset, int whence);

fd : 현재 파일 디스크립터

offset : 기준에서 이동한 크기

whence : 파일 위치 포인터의 기준 (SEEK_SET : 파일 처음, SEEK_CUR : 파일 현 위치, SEEK_END : 파일 마지막)

이동 성공 -> 현재 위치 반환, 실패 -> -1 반환

 

파일 위치 이동

lseek(fd,0L,SEEK_SET);

레코드 단위

lseek(fd,sizeof(record),SEEK_CUR);

 

write(fd,&record1,sizeof(record)); 같은 방식으로도 저장 가능

-> 저장 후 다음 record 기록장소로 포인터 자동 이동

반응형
저작자표시 (새창열림)

'학교수업' 카테고리의 다른 글

인공지능개론 4주차  (0) 2022.03.30
게임공학개론 4주차  (0) 2022.03.28
게임공학개론 3주차  (1) 2022.03.24
컴퓨터 그래픽스 기초 3주차  (0) 2022.03.23
인공지능개론 3주차  (0) 2022.03.21
'학교수업' 카테고리의 다른 글
  • 인공지능개론 4주차
  • 게임공학개론 4주차
  • 게임공학개론 3주차
  • 컴퓨터 그래픽스 기초 3주차
숯불돼지왕갈비
숯불돼지왕갈비
  • 숯불돼지왕갈비
    게임 개발 공부기
    숯불돼지왕갈비
  • 전체
    오늘
    어제
    • 분류 전체보기 (302)
      • 학교수업 (165)
      • 취업강의 (6)
      • C++ (49)
        • 코딩 테스트 (4)
      • Unreal Engine 5 (25)
        • MMORPG 개발 (25)
      • Unreal Engine 4 (44)
        • Omak Project (3)
        • Unreal Engine 4 개발일지 (9)
        • Unreal Engine 4 (32)
      • Unity (1)
        • 개발 일지 (1)
      • 수학 (3)
        • 소프트웨어 공학용 수학 (3)
      • DirectX 11 (4)
      • 게임 디자인 패턴 (2)
      • 포트폴리오 (1)
      • 자격증 (1)
        • 정보처리기사 (0)
        • SQLD (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
숯불돼지왕갈비
UNIX 3주차
상단으로

티스토리툴바