A descriptor is switched to this mode with the O_NONBLOCK flag (fcntl(2)). It is normally combined with a readiness API such as epoll or kqueue, which tells you when trying again will succeed.