본문 바로가기
반응형

Language67

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.
C050_wait 함수 사용하기 wait 함수는 자식 프로세스가 종료되기를 기다리는 것이다. 본격적인 시작에 앞서서 fork에 대해 아직 잘 모르시는 분들은 아래의 링크를 참고해 주세요. https://hig0617.tistory.com/134 wait 함수 설명을 하기에 앞서서 좀비 프로세스에 대해 조금은 알아야 할 필요가 있습니다. 좀비 프로세스 좀비프로세스는 메모리를 차지하지 않고 디스크 용량, I/O, CPU 시간 또한 전혀 차지하지 않습니다. 하지만 프로세스의 테이블 용량을 차지하게 됩니다. 이때 엄청나게 많은 자식의 자식 프로세스들이 생긴다면 테이블의 용량이 가득 차게 되어 프로그램의 문제가 생길 수 있습니다. 이를 예방하기 위해 완전히 끝남을 부모 프로세스에게 알려주어야 합니다. 이를 위해 wait함수를 사용하게 됩니다. .. 2024. 1. 8.
반응형