Em vez de forçar o programa a desligar do lado de fora, eu tentaria acionar uma saída limpa de dentro. Por exemplo, crie um arquivo em algum lugar em que o programa verifique periodicamente se ele existe e feche-se se isso acontecer (leitura relacionada: link ).