I am trying to kill an app using killall
on macos, but everytime I try to do it, it doesn’t kill the app. I have the right name and all but it still won’t kill the app.
My code:
def KillApp(appName): """ This will close a program if the app is open. """ os_name = system() if os_name == "Darwin": os_name = "macOS" if system() == "Windows": return call(["taskkill", "/f", "/im", appName], shell=True) elif system() == "Linux": return call(["killall", appName], shell=True) elif system() == "macOS": return call(["killall", appName], shell=True)`
It returns None and doesn’t kill the program.
Advertisement
Answer
subprocess.call()
uses the same function signature as the Popen
constructor.
The command executed via Popen
needs to be passed in different ways depending on shell argument:
shell=True
, the command needs to be astring
.shell=False
,the command needs to be alist
.
Examples:
return call(["killall", "-9", appName], shell=False) return call(f"killall -9 {appName}", shell=True)