Wyjście z podprogramu wywołanego procedurą .call

0

Witam, udało mi się bezpośrednio otworzyć podprogram funkcją call (kod poniżej)
Po wykonaniu pewnych określonych instrukcji, chcialabym aby podprogram się zamknął - czy ktoś wie jaka funkcja za to odpowiada?

import subprocess
path = r"C:\Users\Magda\Desktop\Programy\project1.exe"
subprocess.call([path])

Pozdrawiam.

1

Tzn chcesz ten proces teraz ubić? To już nie jest taka prosta sprawa bo to jest tak jak z ubijaniem dowolnego innego działającego procesu.

0

Tak - po uruchomeniu skryptu, przy użyciu metody .call otwiera mi się aplikacja stworzona w Delphi - ja sobie coś tam w niej robię (m.in. wysyłam różne dane do pliku tekstowego) i chciałabym, żeby np. w momencie, gdy w pliku tekstowym znajduje się jakaś wartość, to żeby aplikacja wywołana wcześniej funkcją .call się zamknęła (bo obecnie kolokwialnie rzecz ujmując muszę ją zamykać klikając "krzyżyk").

Rozumiem, że to nie jest już taka prosta sprawa?

0

Aha, czyli jednak można to łatwo zamknąć? ;) A możesz mi podpowiedzieć jak tą aplikację, wywołaną tak:

path = "C:\Users\Magda\Desktop\Programy\project1.exe"
subprocess.call([path])

Mogę zamknąć? Bo znalazłam, że:

os.kill(process.pid, signal.SIGKILL)

działa na Linuxie.

A pod WINDOWS coś takiego:

import ctypes
PROCESS_TERMINATE = 1
handle = ctypes.windll.kernel32.OpenProcess(PROCESS_TERMINATE, False, theprocess.pid)
ctypes.windll.kernel32.TerminateProcess(handle, -1)
ctypes.windll.kernel32.CloseHandle(handle)

Tylko nie wiem, czy theprocess.pid to jest proces, który chcę zamknąć?

1 użytkowników online, w tym zalogowanych: 0, gości: 1