#python #sigint #sigterm
#python #sigint #sigterm
Вопрос:
Мне удалось запустить VPN с помощью этого кода
tunnel_file = "sudo /opt/local/sbin/openvpn2 primary_config.ovpn"
VPNProcess = subprocess.Popen(tunnel_file,shell = True)
Проблема в том, что я не могу остановить этот процесс
Я пытался —
VPNProcess.send_signal(signal.SIGINT)
а также отправляет SIGTERM или SIGKILL, но ни один из них не работает. Даже VPNProcess.terminate()
не работает.
Я могу перечислить процессы, кажется, запущены два, процесс sudo и процесс openvpn 2, но если я попытаюсь завершить их в терминале с помощью номера завершения, я получаю ответ «операция не разрешена»
Есть идеи?
Комментарии:
1. Попробуйте это с
shell=False
.2. Вы не можете остановить
sudo
процесс, потому что это setuid, и вы не можете остановитьopenvpn2
процесс, потому что он запущен от имени другого пользователя (root). Вероятно, вам следует создать новый псевдотерминал (pty) для запускаsudo
в; затем вы можете отправить Ctrl-C на pty.