program tip

FD_CLOEXEC fcntl () 플래그는 무엇을합니까?

radiobox 2020. 10. 22. 07:52
반응형

FD_CLOEXEC fcntl () 플래그는 무엇을합니까?


이렇게 :

if (fcntl(fd, F_SETFD, FD_CLOEXEC) == -1) {
...

을 읽었지만 man fcntl그것이 무엇을하는지 알 수 없습니다.


파일 설명자 대한 close-on-exec 플래그를 설정하여 exec-family 함수 중 하나가 성공할 때 파일 설명자가 자동으로 (그리고 원자 적으로) 닫히도록합니다 .

또한 반환 값을 테스트하여 작업이 실패했는지 확인합니다. 유효한 파일 설명자에서이 작업이 실패해야하는 조건이 없기 때문에 파일 설명자가 유효한 경우에는 쓸모가 없습니다.


close()프로세스 또는 자식 이 함수 패밀리 fork()중 하나를 호출 할 때 자동으로 d 가되도록 파일 설명자를 표시합니다 exec*(). 이것은 예를 들어 실행되는 임의의 프로그램에 파일 설명자를 유출하는 것을 방지하는 데 유용합니다 system().

참고 URL : https://stackoverflow.com/questions/6125068/what-does-the-fd-cloexec-fcntl-flag-do

반응형