Está diseñado para no salir. Tenemos que rastrear el proceso y enviarle una señal de salida / kill. Apple incluso dice esto en la página del manual. (y lo que es peor, no provee bindings para dns-sd en swift o cualquier otro lenguaje que pueda encontrar asi que esa parte es un ejercicio que queda para el lector)
Por ejemplo, las llamadas como "navegar completa; la acción de realizar un "browse" pone en marcha maquinaria para notificar al cliente cada vez que instancias de ese tipo de servicio aparezcan o desaparezcan de la red. Estas notificaciones siguen enviándose indefinidamente, durante minutos, horas o incluso días, a medida que los servicios van y vienen, hasta que el cliente finaliza explícitamente la llamada.
Lo mejor que puedo hacer para la secuencia de comandos es utilizar expect
para bifurcar el proceso con un tiempo de espera o simplemente utilizar algo de fuerza bruta como el fondo del comando para que pueda dormir y matarlo y copiar los resultados a la mesa de trabajo.
dns-sd -B _home-sharing &
sleep 5 && kill %1
Si tiene otro proceso en segundo plano como %1
Esto matará el proceso equivocado.
En la práctica, nunca he tenido que esperar más de 30 segundos para una buena navegación o escucha, pero no todas las redes tienen el mismo tamaño.