모든 오픈된 FD는 비정상 종료하더라도 반환되도록 대부분의 시스템에서
구현되어 있습니다.(안 그런 시스템도 있을 수 있다는 얘기죠.)
IPC의 경우(Shared Memory 역시 마찬가지겠죠...) 프로세스에 attach된
주소공간은 반환되겠지만, IPC Key정보 등은 정상적으로 반환하지
않는 경우 그대로 남아있기 때문에 나중에 골치아파집니다.
fd의 경우 exit()함수에 의해 반환되지만, IPC의 경우 exit()함수를 호출한다고
해도 역시 자동적으로 반환되는 것이 아니기 때문에 반드시 IPC 자원을
반환하는 함수를 사용하셔야 합니다.
Quote:
exit()가 _exit()를 부르고..
프로세스에서 개방된 모든
파일 기술자들은 폐쇄된다는 글을
어디서 본것 같습니다..^^;;
FD를 반환하고 atexit()함수에 의해 등록된 종료처리 함수들은 exit()에 의해
수행됩니다. exit()함수가 수행된 후에 _exit()함수가 호출되는 것은 맞지만
이러한 종료처리를 _exit()가 하는 것은 아닙니다.
exit()가 _exit()를 부르고..프로세스에서 개방된 모든
exit()가 _exit()를 부르고..
프로세스에서 개방된 모든
파일 기술자들은 폐쇄된다는 글을
어디서 본것 같습니다..^^;;
IPC류는 남는듯합니다.
FIFO등의 IPC등은 특별히 없에지 않으면 남아 있더군요..
일반적인 파일들은 exit()하면서 뒷처리를 하는듯하지만요...
하지만 그런걸 믿고 안하는건 좋지 않다고 봅니다.
모든 오픈된 FD는 비정상 종료하더라도 반환되도록 대부분의 시스템에서
모든 오픈된 FD는 비정상 종료하더라도 반환되도록 대부분의 시스템에서
구현되어 있습니다.(안 그런 시스템도 있을 수 있다는 얘기죠.)
IPC의 경우(Shared Memory 역시 마찬가지겠죠...) 프로세스에 attach된
주소공간은 반환되겠지만, IPC Key정보 등은 정상적으로 반환하지
않는 경우 그대로 남아있기 때문에 나중에 골치아파집니다.
fd의 경우 exit()함수에 의해 반환되지만, IPC의 경우 exit()함수를 호출한다고
해도 역시 자동적으로 반환되는 것이 아니기 때문에 반드시 IPC 자원을
반환하는 함수를 사용하셔야 합니다.
FD를 반환하고 atexit()함수에 의해 등록된 종료처리 함수들은 exit()에 의해
수행됩니다. exit()함수가 수행된 후에 _exit()함수가 호출되는 것은 맞지만
이러한 종료처리를 _exit()가 하는 것은 아닙니다.
s(˘∼˘*)z,·´″"`°³о$ √(´∀`√)... (˘ヘ˘ㆀ)a
Re: exit() 에 대해서..
커널객체의 경우는 종료시 사라지지 않고, 보통의
일반 힙 메모리나, 파일 디스크립터 등은 다 사라집니다.
그럼 고운 하루되시길...
=========================
CharSyam ^^ --- 고운 하루
=========================
댓글 달기