Wpis z mikrobloga

drogie Mirki z #programowanie #python

odpalam sobie w Pythonie pod Windowsem proces konsolowy używając subprocess:

theproc = subprocess.Popen(command, shell = True, stdin=subprocess.PIPE)
on cośtam sobie robi, widzę w menedżerze zadań, że działa. Chciałbym zapauzować ten proces wysyłając do niego ctrl+c, potem odczytać czy coś wyświetlił, potem ewentualnie kontynuować. Niestety żaden ze sposobów opisanych w dokumentacji lub na forach nie chce działać:

theproc.send_signal(signal.CTRL_C_EVENT)
theproc.stdin.write(chr(3))
theproc.communicate(input = chr(3))
theproc.terminate()
theproc.kill()
ciągle widzę w windowsowym menadżerze, że proces chodzi i żre procka.
Co robię nie tak? Mniej zależy mi na ubiciu, bardziej chciałbym wysłać ctrl-c i dalej się z nim jakoś komunikować. Windows 7, odpalam plik exe z parametrami, python2.7 (mogę zmienić)
  • 1
kiedyś jak pisałeś coś podobnego, to wiem że jak odpalasz z opcją shell=True to metody terminate() i kill() nie działają poprawnie. Można to obejść poprzez wysyłanie sygnałów bezpośrednio do procesu, tylko musisz znać jego pid.

@askorek: