我想通过使用模块sys
发出命令来查看Python程序如何自杀。我怎么能用以下形式的命令让它自杀呢?:
os.system(killCommand)
编辑:强调清晰
所以,为了清楚起见,我希望有一个在shell中运行的字符串可以杀死Python程序。
您可以使用sys.exit()
正常退出程序。
通过提高
SystemExit(status)
退出翻译。如果省略状态或None
,则默认为零(即成功)。如果状态是整数,则将其用作系统退出状态。如果它是另一种对象,它将被打印并且系统退出状态将是一个(即,失败)。
杀死解释器本身的系统命令取决于所使用的shell;如果你的shell是bash
或zsh
,你可以使用:
a@host:~$ python
Python 2.7.8 (default, Oct 20 2014, 15:05:19)
[GCC 4.9.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.system('kill $PPID')
Terminated
a@host:~$
虽然您的实际结果可能有所不同为了更安全,您需要自己提供进程ID:
>>> os.system('kill %d' % os.getpid())
如果您只想将一个获取信号发送到您的流程,您还可以将os.kill()
与流程的流程ID一起使用; os.getpid()
提供了当前正在运行的进程的进程ID:
a@host:~$ python
Python 2.7.8 (default, Oct 20 2014, 15:05:19)
[GCC 4.9.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.kill(os.getpid(), 9)
[1] 27248 killed python
a@host:~$
sys.exit(1)
将终止当前的计划。参数是退出状态 - 除了0表示异常终止。
实际上它是sys.exit
的用途:
退出Python。这是通过引发SystemExit异常来实现的,因此可以接受try语句的finally子句指定的清除操作,并且可以拦截外层的退出尝试。
可选参数arg可以是一个整数,给出退出状态(默认为零)或其他类型的对象。如果它是整数,则零被认为是“成功终止”,并且任何非零值被贝壳等视为“异常终止”。大多数系统要求它在0-127范围内,否则会产生不确定的结果。有些系统有一个约定,用于为特定的退出代码分配特定的含义,但这些通常是不发达的; Unix程序通常使用2表示命令行语法错误,1表示所有其他类型的错误。如果传递了另一种类型的对象,则None等效于传递零,并且任何其他对象将打印到stderr并导致退出代码为1.特别是,sys.exit(“some error message”)是一种快速方法发生错误时退出程序。
由于exit()最终“仅”引发异常,因此它只会在从主线程调用时退出进程,并且异常不会被截获。
如果您在主进程(即您的邮件python脚本)中,则可以使用os
模块
import os
import signal
#Your Python code
os.kill(os.getpid(),signal.SIGKILL)