如何使用通过模块sys运行的命令来获取Python程序?

d3p*_*3pd 5 python shell kill

我想看看Python程序如何通过使用该模块发出命令来自杀sys.我怎么能用以下形式的命令让它自杀呢?:

os.system(killCommand)
Run Code Online (Sandbox Code Playgroud)

编辑:强调清晰

所以,为了清楚起见,我希望有一个在shell中运行的字符串可以杀死Python程序.

Ant*_*ala 16

您可以使用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:~$
Run Code Online (Sandbox Code Playgroud)

虽然您的实际结果可能有所不同 为了更安全,您需要自己提供进程ID:

>>> os.system('kill %d' % os.getpid())
Run Code Online (Sandbox Code Playgroud)

如果您只想将一个获取信号发送到您的流程,您还可以使用os.kill()流程的流程ID; 当前正在运行的进程的进程ID可从os.getpid()以下位置获得:

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:~$ 
Run Code Online (Sandbox Code Playgroud)