Файловые дескрипторы в Linux наследуются дочерними процессами по умолчанию. Чтобы изменить это, вы используете функцию fcntl()
. Следующий вызов установит флаг «close-on-exec» для сокета, что эквивалентно тому, что он не будет наследоваться.
fcntl(socket, F_SETFD, FD_CLOEXEC);
Для обратного (сделать сокет наследуемым, по умолчанию) просто:
fcntl(socket, F_SETFD, 0);