본문 바로가기
SMALL

전체 글139

C055_pipe 함수 사용하기 시작하기에 앞서서 fork에 대해 아직은 잘 모르시는 분들은 아래의 링크를 참고해 주시길 바랍니다. https://hig0617.tistory.com/134 파이프는 2가지로 나뉩니다. '이름 없는 파이프', '이름 있는 파이프' 이렇게 2가지로 나뉘게 되는데, 오늘은 '이름 없는 파이프'에 대해 중점적으로 알아보는 시간을 가지도록 하겠습니다. 간단하게 '이름 없는 파이프'와 '이름 있는 파이프'에 대해 알아보도록 하겠습니다. 이름 없는 파이프(PIPE) 이름 없는 파이프는 부모와 자식 프로세스 간에 통신을 할 수 있게 해 줍니다. 다만 한 방향으로 진행이 됩니다. '부모->자식', 혹은 '자식->부모'로 둘 중에 한 방향으로만 진행이 가능합니다. 이름 있는 파이프(FIFO) 이름 있는 파이프는 독립적인.. 2024. 1. 13.
C054_open 함수 사용하기 시작에 앞서서 파일 디스크립터에 대해 알아야 할 필요가 있습니다. 파일 디스크립터 유닉스 시스템에서 사용되는 개념입니다. 프로세스가 파일들을 접근할 때에 번호가 필요한데 이를 파일 디스크립터라 부릅니다. 기본적으로 할당되는 파일 디스크립터가 총 3가지 있습니다. 0 : 표준 입력(Standard Input) 1 : 표준 출력(Standard Output) 2 : 표준 에러(Standard Error) open함수는 파일 디스크립터를 만드는 함수라고 생각하면 좋을 것 같습니다. open #include intopen(const char *FILENAME, int FLAGS, mode_t MODE); FILENAME은 접근하고자 하는 파일 이름입니다. FLAGS는 어떠한 목적으로 접근할지를 선택하게 해 줍니.. 2024. 1. 12.
C053_dup2 함수 사용하기 dup2는 어제 보았던 dup의 상위 호환 버전이라고 생각하면 좋을 것 같습니다. dup는 파일 디스크립터를 단순히 복제하는 데에 그쳤습니다. dup2는 여기서 한발 더 나아가 파일 디스크립터를 원하는 번호로 복제를 진행을 합니다. 예를 들어 "out"이라는 파일을 "STDOUT_FILENO"로 복제하여 출력값을 out파일에서 받을 수 있습니다. dup2 #include intdup2(int fd, int fd2); fd는 복사하고자 하는 파일 디스크립터고 fd2는 복제된 파일 디스크립터의 번호를 나타냅니다. 성공 시 fd2를 반환하고 실패 시 -1을 반환합니다. #include #include #include int main(void) { int fd; fd = open("./out", O_CREAT .. 2024. 1. 11.
C052_dup 함수 사용하기 dup는 파일 디스크립터를 복사하는 것을 의미합니다. dup #include intdup(int fd); 복제하고 싶은 fd를 인자로 넣으면 반환값으로 복제된 파일디스크립터가 나옵니다. 만약 복제의 실패 시에 -1을 리턴합니다. 아래의 코드는 exist의 파일 디스크립터를 복사하여 사용하는 것입니다. #include #include #include int main(void) { int fd; int copy; char buffer[1000]; int ret; fd = open("./exist", O_RDONLY); if (fd < 0) return (0); copy = dup(fd); if (copy == -1) { close(fd); return (0); } close(fd); ret = read(co.. 2024. 1. 10.
LIST