socket close_on_exec
父進程fork子進程后,子進程會復制父進程的socket描述符。如果想讓子進程在exec時,釋放掉所擁有的父進程的socket描述符,可以設置父進程的socket close_on_exec特性。
if( fcntl(iSockFd, F_GETFD, arg) < 0 ) /* 這個很重要,要不下面設置不成功 */
{
exit(-1);
}
arg |= FD_CLOEXEC;
if( fcntl(iSockFd, F_SETFD, 1) < 0 )
{
exit(-1);
}