Ya encontré la solución.
La verdad que era todo culpa mia
El programa que lanzaba remotamente tenía un "cout" en mitad de su ejecución y claro si yo despues de lanzarlo no me quedaba esperando la salida fallaba.
Así que quitando el "cout" mi programa no devuelve nada que haga falta estar esperando por el resultado y entonces puedo finalizar mi programa perfectamente.
La verdad que era una tontería pero hasta que me he dado cuenta jeje.
Un saludo.