use FD_CLOEXEC instead of tracking lists of fds