실습 코드에

close(1); <<요런 라인이 있었다..

 

1이 뭐여?

 

알고보니 unistd.h 에서 사용하는 파일디스크립터(file descriptor)의 매크로이당.. ( POSIX API의 일부란다)

 

매크로란 인수형 등의 인자를 쉽게 기억하기(?) 위해

또는 코드 가독성을 올리기위해 사용하는 것...

아래 표의 첫번째칸 값을 넣으나

세번째칸 값을 넣으나 똑같다는 것이다

보통 C에서 대문자로 표현된당..

 

 

고로 close(1) 은

스탠다드 아웃풋 디스크립터를 닫는다 즉, 더이상 본 프로세스에서 표준 출력을 쓰지 않겠다 라는 것이다.

close(0) 은 표준입력을 받지 않겠다는 것이다.

위 세개의 파일 디스크립터, 스트림은 open을 따로 하지 않아도 프로세스 생성 시 자동으로 생성된다.

 

https://holsui.tistory.com/71?category=848174 블로그 내용


close(2) 함수 기능_파일 디스크립터 닫기

 

open으로 열었던 파일을 닫아주는 함수입니다.

하나의 프로세스에서 너무 많은 파일을 열게되면 시스템 자원을 낭비하게 되기 때문에 사용하지 않는 파일은 닫아주는 것이 좋습니다.

단 프로세스가 종료되면 파일은 자동으로 닫히기 때문에 프로세스 전반적으로 이용하는 파일의 경우에는 수동으로 닫아주지 않아도 됩니다.

 close ()는 파일 설명자를 닫아 더 이상 파일을 참조하지 않고 재사용할 수 있습니다. 
       연결되고 프로세스가 소유한 파일에 보유된 모든 레코드 잠금(fcntl(2))은 제거됩니다.
       fd가 기본 열린 파일 설명을 참조하는 마지막 파일 설명자(open(2))인 경우 열린 파일 설명과 연결된 
       리소스가 해제됩니다. 
       파일 설명자가 unlink(2) 를 사용하여 제거된 파일에 대한 마지막 참조인 경우 파일이 삭제됩니다.

함수 원형

#include <unistd.h>

int close(int fd);

매개변수

  • fd
    닫고자 하는 파일의 파일 디스크립터

반환값

성공 시 0을 반환
오류 발생 시 -1이 반환되고 오류를 나타내도록 errno 가 설정

출처:

https://bubble-dev.tistory.com/entry/CC-close-%ED%95%A8%EC%88%98

 

C/C++ close() 함수

close(2) 함수 기능 open으로 열었던 파일을 닫아주는 함수입니다. 하나의 프로세스에서 너무 많은 파일을 열게되면 시스템 자원을 낭비하게 되기 때문에 사용하지 않는 파일은 닫아주는 것이 좋습

bubble-dev.tistory.com

https://man7.org/linux/man-pages/man2/close.2.html

 

close(2) - Linux manual page

close(2) — Linux manual page CLOSE(2) Linux Programmer's Manual CLOSE(2) NAME         top close - close a file descriptor SYNOPSIS         top #include int close(int fd); DESCRIPTION         top close() closes a file descriptor, so that it no

man7.org

 

+ Recent posts