이렇게 :
if (fcntl(fd, F_SETFD, FD_CLOEXEC) == -1) {
...
을 읽었지만 man fcntl
그것이 무엇을하는지 알 수 없습니다.
답변
파일 설명자 에 대한 close-on-exec 플래그를 설정하여 exec
-family 함수 중 하나가 성공할 때 파일 설명자가 자동으로 (그리고 원자 적으로) 닫히도록합니다 .
또한 반환 값을 테스트하여 작업이 실패했는지 확인합니다. 유효한 파일 설명자에서이 작업이 실패해야하는 조건이 없기 때문에 파일 설명자가 유효한 경우에는 쓸모가 없습니다.
답변
close()
프로세스 또는 자식 이 함수 패밀리 fork()
중 하나를 호출 할 때 자동으로 d 가되도록 파일 설명자를 표시합니다 exec*()
. 이것은 예를 들어 실행되는 임의의 프로그램에 파일 설명자를 유출하는 것을 방지하는 데 유용합니다 system()
.