본문 바로가기
SMALL

Language60

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.
C051_waitpid 함수 사용하기 어제 wait 함수에 대해 설명을 해드렸습니다. 어떻게 보면 wait의 상위 버전인 waitpid에 대해 설명을 해드리도록 하겠습니다. 자식 프로세스가 종료되지 않는다면 blocking에 빠지게 됩니다. 너무 새로운 말이 등장을 했네요. blocking이 무엇일까요?? 간단하게 설명을 해드리도록 하겠습니다. 프로그램의 모든 동작은 cpu가 하게 됩니다. 근데 cpu를 받아도 instruction 즉, 컴퓨터에 지시를 못 내리는 경우가 있습니다. 이러한 경우를 blocking라고 합니다. blocking이 되는 이유는 더 많이 있는데 여기서는 그 부분까지 다루지는 않겠습니다. waitpid는 만약 자식 프로세스가 blocking 상태가 일정시간 유지된다면 자식프로세스가 종료되게 해 줍니다. 또 다른 차이점.. 2024. 1. 9.
LIST