스트림과 관련된 시스템 콜

이동욱

2021/07/24

Categories: 시스템 프로그래밍 Tags: 시스템 프로그래밍

스트림과 관련된 시스템 콜


파일 디스크립터


표준 입력, 표준 출력, 표준 에러 출력


표준 입력과 표준 출력


표준 에러 출력


파일 디스크립터 매크로 의미
0 STDIN_FILENO 표준입력, 기본 입력 스트림
1 STDOUT_FILENO 표준 출력, 기본 출력 스트림
2 STDERR_FILENO 표준 에러 출력, 별도 메시지 출력용

스트림 읽기 및 쓰기


read(2)

#include <unistd.h>

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

주의사항

C언어 문자열에는 임의의 바이트 열을 저장할 수 있지만, 일반적으로 문자열의
끝에는 '\0'을 넣는 것이 관례이다. API 중에도 문자열의 끝에 '\0'이 있다고
전체하는 것과 그렇지 않은 것이 있어서 사용에 주의 해야한다. 
예를 들어, 문자열의 끝에 '\0'이 있다고 전제하는 API에 '\0'로 끝나지 
않는 문자열을 전달하면 문제가 될 수 있다.

write(2)


#include <unistd.h>

ssize_t write(int fd, const *buf, size_t bufsize);

스트림이란?


파일 열기


프로세스가 만들어 질 때부터 사용할 수 있는 스트림으로는 표준 입력, 표준 출력, 표준 에러 출력이 있다. 이번에는 이 이외의 스트림을 만드는 방법에 대해서 알아보자.

open(2)

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

int open(const char *path, int flags);
int open(const char *path, int flags, mode_t mode);

파일을 열 때 사용할 수 있는 flag(1)

flag 의미
O_RDONLY 읽기 전용
O_WRONLY 쓰기 전용
O_RDWR 읽고 쓰기

close(2)


#include <unistd.h>

int close(int fd);
if (close(fd) < 0) {
  /* 에러 처리 */
}

참고 문헌

>> Home