[minishell] 사용 가능 함수 정리

J_JEON·2022년 9월 17일
1

minishell

목록 보기
2/5

readline

#include <readline/readline.h>

char *readline(const char *str)
  • 인자
    • *str : 프롬포트에 출력할 문자열
  • 기능
    • str을 출력하고 프롬포트에서 표준입력으로 문자열을 입력받고 입력된 문자열을 반환
    • 입력이 완료되기 전 까지는 다음 코드로 진행되지않음
  • 반환값
    • 저장공간을 동적할당하고 입력받은 문자열을 저장하여 반환함
  • 주의사항
    • -lreadline 라이브러리를 링크해주어야 함
    • 반환받은 문자열은 사용 후 저장공간 할당을 해제해주어야 함

rl_on_new_line

#include <readline/readline.h>

int rl_on_new_line (void)
  • 인자
    • 없음
  • 기능
    • 알림형태 함수
    • readline 디렉토리에서 update관련 함수들에게 커서가 다음줄로 이동한것을 알려줌
  • 반환값
    • 성공시 0
    • 에러시 -1
  • 주의사항
    • -lreadline 라이브러리를 링크해주어야 함

rl_replace_line

#include <readline/readline.h>

void rl_replace_line(const char *str, int clear_undo)
  • 인자
    • *str : 대체해줄 문자열
    • clear_undo : 0이라면 undo_list를 초기화하지않고 0이외의 값이라면 초기화
  • 기능
    • 사용자가 프롬포트에 입력했던 문자열을 저장한 전역변수인 rl_line_bufferstr로 대체 해줌
    • clear_undo값이 0이라면 undo_list를 초기화하지않고 아니라면 초기화
      • undo_listreadline에서 사용하는 undo 작업에 사용
  • 반환값
    • 없음
  • 주의사항
    • readline 라이브러리를 링크해주어야 함
    • MAC에는 없어서 brew를 이용해 readline을 설치해주어야 함 (brew install readline)
    • brew info readline을 사용해 readline 설치경로를 불러오고 컴파일시 -L, -I 옵션을 추가해주어야 함

rl_redisplay

#include <readline/readline.h>

void rl_redisplay(void);
  • 인자
    • 없음
  • 기능
    • rl_replace_line()으로 변경한 rl_line_buffer를 프롬포트에 함께 다시 출력 해줌
    • 이때 함께 출력되는 프롬포트는 readline 함수 사용시 입력했던 str이 출력 됨
  • 반환값
    • 없음
  • 주의사항
    • readline 라이브러리를 링크해주어야 함

add_history

#include <readline/history.h>

int add_history(const char *line);
  • 인자
    • *line : 대체할 문자열
  • 기능
    • 이전에 입력했던 문자열을 키보드 위, 아래 버튼을 사용해 다시 불러올 수 있는데, 이런 문자열들이 저장된 historyline 문자열을 추가 해줌
  • 반환값
    • 성공시 0
    • 에러시 -1
  • 주의사항
    • UNIX 내장 read_line 사용시 int형을 반환하지만 GNU Libraryread_line을 사용시 반환값이 없음

wait

#include <sys/wait.h>

pid_t wait(int *status);
  • 인자
    • *status : 종료된 자식프로세스의 상태를 저장할 저장공간
      • 정상종료 : 하위 8비트에는 0, 상위 8비트에는 종료시 exit()에 들어있던 인수
      • 비정상종료 : 하위 8비트에는 종료시킨 시그널 번호, 상위 8비트에는 0
  • 기능
    • fork()로 생성한 자식 프로세스가 종료되는것을 기다리는 함수
    • 호출시 자식 프로세스가 종료될 때 까지 대기
  • 반환값
    • 성공시 종료된 자식 프로세스 pid_t
    • 에러시 -1
  • 주의사항

waitpid

#include <sys/wait.h>

pid_t waitpid(pid_t pid, int *status , int options);
  • 인자
    • pid : 종료를 기다릴 프로세스의 pid
      • pid == -1일 때는 임의의 자식 프로세스를 기다림
      • pid == 0일 때는 waitpid를 호출한 프로세스와 같은 프로세스 그룹의 자식프로세스를 기다림
      • pid < -1 일 때는 pid의 절대값이 프로세스 그룹id 인 자식 프로세스를 기다림
      • pid > 0 일 때는 pid가 프로세스의 id인 자식 프로세스를 기다림
    • *status : 종료된 자식프로세스의 상태를 저장할 저장공간
      • 정상종료 : 하위 8비트에는 0, 상위 8비트에는 종료시 exit()에 들어있던 인수
      • 비정상종료 : 하위 8비트에는 종료시킨 시그널 번호, 상위 8비트에는 0
    • option
      • WNOHANG : waitpid 실행시 자식 프로세스가 종료된 상태가 아니라면 대기하지않고 종료
      • WUNTRACED : 프로세스의 종료뿐만이 아닌 멈춤상태도 감지하여 반환해줌
  • 기능
    • fork()로 생성한 자식 프로세스가 종료되는것을 기다리는 함수
    • 호출시 자식 프로세스가 종료될 때 까지 대기
  • 반환값
    • 성공시 종료된 자식 프로세스 pid_t
    • 에러시 -1
  • 주의사항

wait3

#include <sys/wait.h>

pid_t wait3(int *status, int options, struct rusage *rusage);
  • 인자
    • *status : 종료된 자식프로세스의 상태를 저장할 저장공간
      • 정상종료 : 하위 8비트에는 0, 상위 8비트에는 종료시 exit()에 들어있던 인수
      • 비정상종료 : 하위 8비트에는 종료시킨 시그널 번호, 상위 8비트에는 0
    • option
      • WNOHANG : waitpid 실행시 자식 프로세스가 종료된 상태가 아니라면 대기하지않고 종료
      • WUNTRACED : 프로세스의 종료뿐만이 아닌 멈춤상태도 감지하여 반환해줌
    • *rusage : 자식 프로세스의 자원 사용량을 저장할 구조체
  • 기능
    • waitpidpid가 -1일때와 대부분 동일한 기능
    • *rusage에는 자원의 사용량을 저장해줌
  • 반환값
    • 성공시 종료된 자식 프로세스 pid_t
    • 에러시 -1
  • 주의사항
    • waitpid와 동일한 기능을 하지만 다른점은 자원의 사용량을 알 수 있는 구조체인 rusage 가 있어 자원의 사용량을 구할 수 있음

wait4

#include <sys/wait.h>

pid_t wait4(pid_t pid, int *status, int options, struct rusage *rusage);
  • 인자
    • pid : 종료를 기다릴 프로세스의 pid
      • pid == -1일 때는 임의의 자식 프로세스를 기다림
      • pid == 0일 때는 waitpid를 호출한 프로세스와 같은 프로세스 그룹의 자식프로세스를 기다림
      • pid < -1 일 때는 pid의 절대값이 프로세스 그룹id 인 자식 프로세스를 기다림
      • pid > 0 일 때는 pid가 프로세스의 id인 자식 프로세스를 기다림
    • *status : 종료된 자식프로세스의 상태를 저장할 저장공간
      • 정상종료 : 하위 8비트에는 0, 상위 8비트에는 종료시 exit()에 들어있던 인수
      • 비정상종료 : 하위 8비트에는 종료시킨 시그널 번호, 상위 8비트에는 0
    • option
      • WNOHANG : waitpid 실행시 자식 프로세스가 종료된 상태가 아니라면 대기하지않고 종료
      • WUNTRACED : 프로세스의 종료뿐만이 아닌 멈춤상태도 감지하여 반환해줌
    • *rusage : 자식 프로세스의 자원 사용량을 저장할 구조체
  • 기능
    • waitpid와 대부분 동일한 기능
    • *rusage에 자원의 사용량을 저장해줌
  • 반환값
    • 성공시 종료된 자식 프로세스 pid_t
    • 에러시 -1
  • 주의사항
    • waitpid와 동일한 기능을 하지만 다른점은 자원의 사용량을 알 수 있는 구조체인 rusage 가 있어 자원의 사용량을 구할 수 있음

signal

#include <signal.h>

void *signal(int signo, void *(func)) 
  • 인자
    • signo : 수신할 시그널의 종류
    • (func) :signo 시그널을 수신 했을 때 실행시킬 함수
  • 기능
    • signo 시그널을 수신하게되면 (func)함수를 실행 시키도록 하는 함수
  • 반환값
    • 성공시 설정된 함수의 포인터를 반환
    • 실패시 -1 반환
  • 주의사항
    • 실행시 해당 시그널을 받을 때 까지 정지해 있는것이 아닌 다음 코드를 진행함

kill

#include <signal.h>

int kill(pid_t pid, int sig)
  • 인자
    • pid : 종료를 기다릴 프로세스의 pid
      • pid == -1일 때는 호출한 프로세스가 전송할 수 있는 권한을 가진 모두에게 sig 시그널을 보냄
      • pid == 0일 때는 호출한 프로세스와 같은 프로세스 그룹의 프로세스 모두에게 sig 시그널을 보냄
      • pid < -1 일 때는 pid의 절대값이 프로세스 그룹id 인 프로세스에 sig 시그널을 보냄
      • pid > 0 일 때는 pid가 프로세스의 id인 프로세스에 sig 시그널을 보냄
  • 기능
    • 특정 pid 또는 그룹에 sig 시그널을 전송함
  • 반환값
    • 성공시 0
    • 에러시 -1
  • 주의사항

exit

#include <stdlib.h>

void exit(int status)
  • 인자
    • status : 현재의 종료가 정상종료라면 0, 비정상 종료라면 0보다 큰 값
  • 기능
    • 현재의 프로세스를 종료하며 버퍼를 모두 삭제
  • 반환값
    • 시스템에 status 값과 제어를 반환
  • 주의사항

getcwd

#include <unistd.h>

char *getcwd(char *buf, size_t size);
  • 인자
    • *buf : full path를 저장할 저장공간
    • size : buf 에 할당된 저장공간 크기
  • 기능
    • 현재 작업중인 디렉토리의 full path\0로 끝나는 문자열로 buf에 저장하고 반환
    • size의 크기가 full path의 길이보다 작다면 NULL을 반환
  • 반환값
    • 성공시 full path를 저장한 문자열
    • 실패시 NULL 반환 및 errno에 에러정보 저장
      • EACCES : path 구성 중의 디렉토리에 search 권한이 없음
      • EINVAL : bufNULL이 아닌데, size0
      • ENAMETOOLONG : full path 가 너무 길거나 한 디렉토리명이 너무김
      • ENOENT : 현재 작업 디렉토리가 unlink
      • ERANGE : full path를 저장할 bufsize가 작음
  • 주의사항
    • 만약 bufNULL이라면 자동으로 malloc으로 공간을 할당하여 저장하고 반환
    • 사용이 완료되면 반환받은 문자열의 저장공간을 free 해주어야 함

chdir

#include <unistd.h>

int chdir(const char * path)
  • 인자
    • path : 변경할 디렉토리의 경로
  • 기능
    • 현재 작업 디렉토리를 path로 변경해줌
  • 반환값
    • 성공시 0
    • 에러시 -1, errno에 에러정보 저장
      • EACCES : path 구성 중의 디렉토리에 search 권한이 없음
      • EFAULT : path 변수 자체가 잘못된 주소
      • ENAMETOOLONG : Full Path명이 너무 길거나 한 디렉토리명이 너무김
      • ENOENT : 존재하지 않는 파일임
      • ENOTDIR: 디렉토리가 아님
  • 주의사항

stat

#include <sys/stat.h>

int stat(const char *pathname, struct stat *buf);
  • 인자
    • pathname : 상태를 알아올 파일의 경로
    • buf : 파일의 상태를 알아온 뒤 상태들을 저장할 stat 구조체
      • stat 구조체
        struct stat {
            dev_t         st_dev;      /* device */
            ino_t         st_ino;      /* inode */
            mode_t        st_mode;     /* protection */
            nlink_t       st_nlink;    /* number of hard links */
            uid_t         st_uid;      /* user ID of owner */
            gid_t         st_gid;      /* group ID of owner */
            dev_t         st_rdev;     /* device type (if inode device) */
            off_t         st_size;     /* total size, in bytes */
            blksize_t     st_blksize;  /* blocksize for filesystem I/O */
            blkcnt_t      st_blocks;   /* number of blocks allocated */
            time_t        st_atime;    /* time of last access */
            time_t        st_mtime;    /* time of last modification */
            time_t        st_ctime;    /* time of last change */
        };
  • 기능
    • pathname 경로인 파일의 상태를 buf에 저장
  • 반환값
    • 성공시 0
    • 에러시 -1, 에러 정보는 errno에 저장
      • EACCES : path 구성 중의 디렉토리에 search 권한이 없음
      • EFAULT : path 변수 자체가 잘못된 주소
      • ENAMETOOLONG : path가 너무 길거나 폴더 이름이 너무 김
      • ENOENT : path가 빈 문자열이거나 path를 구성하는 directory중에서 없는 directory가 있음
      • ENOMEM : 메모리가 부족
      • ENOTDIR : path를 구성하는 directory중에서 directory가 아닌 것이 있음
      • EOVERFLOW : 32bit OS에서 컴파일시에 -D_FILE_OFFSET_BITS=64 옵션없이 컴파일하여
        파일크기나 inode번호가 64bit에 맞지 않음
  • 주의사항
    • pathname의 파일이 symbolic link라면 link되어있는 원본파일의 정보를 가져옴

lstat

#include <sys/stat.h>

int lstat(const char *pathname, struct stat *buf);
  • 인자
    • pathname : 상태를 알아올 파일의 경로
    • buf : 파일의 상태를 알아온 뒤 상태들을 저장할 stat 구조체
  • 기능
    • pathname 경로인 파일의 상태를 buf에 저장
  • 반환값
    • 성공시 0
    • 에러시 -1, 에러 정보는 errno에 저장 (stat()과 동일)
  • 주의사항
    • pathname의 파일이 symbolic link라면 symbolic link인 파일 그 자체의 정보를 가져옴

fstat

#include <sys/stat.h>

int fstat(int fd, struct stat *buf);
  • 인자
    • fd : open()으로 불러온 파일의 fd
    • buf : 파일의 상태를 알아온 뒤 상태들을 저장할 stat 구조체
  • 기능
    • open()으로 불러온 파일의 fd값으로 파일의 정보를 가져와 buf에 저장
  • 반환값
    • 성공시 0
    • 에러시 -1, 에러 정보는 errno에 저장
  • 주의사항
#include <unistd.h>

int unlink(const char* pathname)
  • 인자
    • pathname : 파일의 경로
  • 기능
    • 해당 path에 있는 파일을 삭제하고 원본 파일의 Link 카운트를 1 감소 시킴
    • 만약 해당 원본파일을 link하고있는 파일이 모두 없어져 카운트가 0이된다면 해당 원본파일의 메모리를 삭제함
  • 반환값
    • 성공시 0
    • 에러시 -1
  • 주의사항
    • 사용시 권한이 필요함

execve

#include <unistd.h>

int execve(const char *filepath, char *const argv[], char *const envp[]);
  • 인자
    • filepath : 실행할 binary파일 또는 shell파일, 정확한 경로를 지정해주어야 함
    • argv[] : main함수의 argv와 같음, arg 인수 목록이며 filepath에 전달됨
    • envp : 환경변수 목록이며 filepath에 전달됨
  • 기능
    • 실행 가능한 파일인 filepath를 현재 실행중인 프로세스에 적재하여 기존에 수행하던 기능을 중단하고 filepath의 기능을 실행한다
  • 반환값
    • 성공시 없음
    • 에러시 -1errno에 에러정보 저장
  • 주의사항

opendir

#include <dirent.h>

DIR *opendir(const char *name);
  • 인자
    • name : 열 파일의 경로
  • 기능
    • name에 해당하는 디렉토리 내부 파일의 정보를 읽어오기위해 파일을 열어줌
  • 반환값
    • 성공시 열린 디렉토리 스트림 포인터
    • 실패시 NULLerrno에 에러정보 저장
  • 주의사항

readdir

#include <dirent.h>

struct dirent *readdir(DIR *dirp);
  • 인자
    • dirp : opendir()함수를 통해 받아온 디렉토리 스트림 포인터
  • 기능
    • dirp에 해당하는 디렉토리의 정보를 읽고 정보를 담은 구조체 포인터를 반환
      struct dirent {
      	ino_t          d_ino;       /* Inode number */
      	off_t          d_off;       /* Not an offset; see below */
      	unsigned short d_reclen;    /* Length of this record */
      	unsigned char  d_type;      /* Type of file; not supported by all file system types */
      	char           d_name[256]; /* Null-terminated filename */
      };
  • 반환값
    • 성공시 디렉토리 정보를 담은 dirent 구조체 포인터
    • 실패시 NULLerrno에 에러정보 저장
  • 주의사항

closedir

#include <dirent.h>

int closedir(DIR *dirp);
  • 인자
    • dirp : 닫을 디렉토리의 DIR
  • 기능
    • 열려있는 dirp를 닫아줌
  • 반환값
    • 성공시 0
    • 에러시 -1errno에 에러정보 저장
  • 주의사항

strerror

#include <string.h>

char *strerror(int errno);
  • 인자
    • errno : 에러코드
  • 기능
    • errno에 해당하는 에러메시지를 반환
  • 반환값
    • 성공시 errno에 해당하는 에러메시지의 포인터
    • 에러시 Unknown error : errnum 반환
  • 주의사항
    • 컴파일러 및 환경에 따라 에러메시지가 다를 수 있음

errorno

#include <errno.h>
  • 인자
  • 기능
    • 에러에 대한 정보를 저장할 수 있게 해주는 변수
    • errno에 에러 정보를 저장해주는 함수에서 에러 발생시 자동으로 errno에 에러코드가 저장
  • 반환값
  • 주의사항

isatty

#include <unistd.h>

int isatty(int fd)
  • 인자
    • fd : 연결을 확인할 fd
  • 기능
    • fd에 해당하는 파일 디스크립터가 터미널에 연결되어있는지 확인
  • 반환값
    • 성공시 1
    • 실패시 0errno에 에러코드가 저장
  • 주의사항

ttyname

#include <unistd.h>

char *ttyname(int fd)
  • 인자
    • fd : 연결된 터미널을 확인할 fd
  • 기능
    • fd에 해당하는 파일 디스크립터가 연결되어있는 터미널의 이름을 반환
  • 반환값
    • 성공시 1
    • 실패시 0errno에 에러코드가 저장
  • 주의사항

ttyslot

#include <unistd.h>

int ttyslot(void)
  • 인자
    • 없음
  • 기능
    • /etc/ttys 에 있는 항목 중 현재 프로세서에서 사용중인 터미널의 인덱스를 반환
  • 반환값
    • 성공시 현재 프로세서가 사용중인 터미널의 인덱스
    • 실패시 0
  • 주의사항

ioctl

#include <sys/ioctl.h>

int ioctl(int fd, unsigned long request, ...)
  • 인자
    • fd : open()으로 연 파일 디스크립터
    • request : 디바이스에 전달해줄 명령
    • . . . : 명령 수행시 필요한 인자
  • 기능
    • read()write()와 같이 읽기, 쓰기를 할 수 있음
    • read(), write()로 할수없는 하드웨어 제어나 상태 정보를 얻기위해 사용
  • 반환값
    • 성공시 0
    • 에러시 -1
  • 주의사항

getenv

#include <stdlib.h>

char *getenv(const char *name)
  • 인자
    • name : 찾을 환경변수의 이름
  • 기능
    • name에 해당하는 이름의 환경변수를 찾은 뒤 값을 반환
  • 반환값
    • 성공시 name 환경변수의 값
    • 에러시 NULL
  • 주의사항

tcgetattr

#include <termios.h>

int tcgetattr(int fildes, struct termios *termios_p)
  • 인자
    • fildes : 속성을 받아올 터미널
    • termios_p : 터미널의 속성을 저장하는 구조체
      struct termios {
      	tcflag_t        c_iflag;        /* input flags */
      	tcflag_t        c_oflag;        /* output flags */
      	tcflag_t        c_cflag;        /* control flags */
      	tcflag_t        c_lflag;        /* local flags */
      	cc_t            c_cc[NCCS];     /* control chars */
      	speed_t         c_ispeed;       /* input speed */
      	speed_t         c_ospeed;       /* output speed */
      };
  • 기능
    • 현재 터미널의 속성을 받아와 termios_p에 저장
  • 반환값
    • 성공시 0, termios_p에 터미널 속성 저장
    • 에러시 -1 , errno에 에러정보 저장
  • 주의사항

tcsetattr

#include <termios.h>

int tcsetattr(int fildes, int option, const struct termios *termios_p)
  • 인자

    • fildes : 설정을 변경할 터미널
    • option : 터미널에 설정이 언제 적용될지 지정하는 옵션
      • TCSANOW : 즉시 적용
      • TCSADRAIN : fildes에 관한 모든 출력이 이루어진 뒤 동작, 출력과 관련된 파라메터를 변경할 때 사용
      • TCSAFLUSH : fildes에 관한 모든 출력및 입력이 이루어진 뒤 동작, 변경되는 중간에 들어온 입력은 버림
    • termios_p : 터미널의 속성이 들어있는 구조체
  • 기능

    • fildes 터미널의 설정을 termios_p에 되어있는 속성으로 설정
  • 반환값

    • 성공시 0
    • 에러시 -1 , errno에 에러정보 저장
  • 주의사항

tgetent

#include <term.h>

int tgetent(char *bp, const char *name)
  • 인자
    • bp : 버퍼포인터, 무시되므로 NULL 넣어도 됨
    • name : 엔트리로 설정할 이름
  • 기능
    • name에 해당하는 이름의 장치를 entry로 설정
  • 반환값
    • 성공시 1
    • name이 없으면 0
    • 데이터베이스가 없으면 -1
  • 주의사항
    • getenv()에서 TERM을 조회하면 현재 장치의 이름을 알 수 있음

tgetnum

#include <term.h>

int tgetnum(char *id)
  • 인자
    • id : 기능의 코드
  • 기능
    • id에 해당하는 코드의 기능이 터미널에 존재한다면 양수 반환
  • 반환값
    • 기능이 있다면 양수
    • 기능이 없다면 -1
  • 주의사항

tgetflag

#include <term.h>

int tgetflag(char *id)
  • 인자
    • id : 기능의 코드
  • 기능
    • id에 해당하는 코드의 기능이 터미널에 존재한다면 true 반환
  • 반환값
    • 기능이 있다면 true
    • 기능이 없다면 false
  • 주의사항

tgetstr

#include <term.h>

char *tgetstr(char *id, char **area)
  • 인자
    • id : 기능의 코드
    • area : 버퍼포인터, 일반적으로 NULL 사용
  • 기능
    • id에 해당하는 코드의 기능이 터미널에 존재한다면 문자열로 반환
  • 반환값
    • 성공시 문자열
    • 에러시 NULL
  • 주의사항

tgoto

#include <term.h>

char *tgoto(const char *cap, int col, int row)
  • 인자
    • cap : 기능 코드
      • cm(cursor monitor)
      • BC(back space)
      • UP(cursor up)
    • col : 열
    • row : 행
  • 기능
    • 커서의 움직임을 제어
  • 반환값
    • 성공시 설정한 열, 행 에 해당하는 주소를 반환
    • 에러시 NULL
  • 주의사항
    • 행, 열 순서가 아닌 열, 행 순서임 (왼쪽 위는 (0,0))

tputs

#include <term.h>

int tputs(const char *str, int affcnt, int (*putc)(int))
  • 인자
    • str : tgetstr() 이나 tgoto()의 반환값
    • affcnt : 영향을 받을 라인의 수 (여러줄에 영향을 주는것이 아닌 일반적인 상황에선 1)
    • *putc : ASCII문자값을 받아 표준출력으로 출력할 값
  • 기능
    • 기능을 실행
  • 반환값
    • 성공시 0
    • 에러시 -1
  • 주의사항

dup

#include <unistd.h>

int dup(int fildes);
  • 인자
    • fildes : 복제할 fd
  • 기능
    • fildes로 받은 파일 서술자를 복제하여 반환한다.
  • 반환값
    • 성공시 fd(새 파일 서술자)
    • 에러시 -1
  • 주의사항

dup2

#include <unistd.h>

int dup2(int fildes, int fildes2);
  • 인자
    • fildes : 복제할 fd
    • fildes2 : 새 fd값을 넣을 곳
  • 기능
    • fildes로 받은 파일 서술자를 fildes2로 복제한다.
    • fildes2 가 이미 열려 있다면, 열려 있던 fd를 닫고 복제한다.
    • ex) dup2(fd, stdout); 을 하면 stdout(표준출력) 은 fd로 향한다.
  • 반환값
    • 성공시 fd(새 파일 서술자)
    • 에러시 -1
  • 주의사항

pipe

#include <unistd.h>

int pipe(int fildes[2]);
  • 인자
    • fildes[0] : 파이프 출력 fd
    • fildes[1] : 파이프 입력 fd
  • 기능
    • 파이프를 생성한다.
  • 반환값
    • 성공시 0 반환
    • 에러시 -1 반환
    • errno
      [EFAULT]           The fildes buffer is in an invalid area of the
      process's address space.
      
      [EMFILE]           Too many descriptors are active.
      
      [ENFILE]           The system file table is full.
      
  • 주의사항
    • 파이프의 입력 fd[1] 을 사용할 프로세스는 출력[0] 을 닫아줘야 한다.
    • 파이프의 출력 fd[0] 을 사용할 프로세스는 입력[1] 을 닫아주어야 하며, reader 에게 eof를 주는 유일한 방법이다.
profile
늅늅

0개의 댓글