os.system('exit')的麻烦

时间:2017-05-19 15:28:45

标签: python-3.x

我在游戏中工作,我用Python编码,我有ubuntu / linux。 我遇到了os.system('clear')的问题,但是效果不好。 这是代码:

    elif acc == 'dinero':
        print('Tienes ' + str(dinero) + '$')
    elif acc == 'salir':
        os.system('exit')

这是代码的一部分,问题是在第二个elif,如果我输入“salir”它只是冻结并保持运行。我在代码中有另一个os.sytem('exit'),但它运行良好,我不知道如何解决它,任何想法?所有其他投入都运作良好。

1 个答案:

答案 0 :(得分:1)

问题是,当您在终端中键入exit时(os.system基本上做什么),您将退出整个会话,而不仅仅是您的程序。由于您只想退出程序,请执行以下操作:

import sys
# ...
elif acc == "salir":
    sys.exit(0)

更深入地解释两者之间的差异(如果你能使这个更正确或可理解,请编辑)。

当您从Linux / Mac / Windows上的shell运行程序时,有两个程序正在运行,shell和您自己的程序。您的程序作为shell的“子进程”运行。这意味着shell“拥有”它。如果您的程序退出,则shell仍处于运行状态。

想象一下,遛狗,你的狗死了。你仍然可以完成你的步行或做任何事情。这就是sys.exit(0)的作用。这是你的狗自杀,所以你可以继续走路。

然而,os.system("exit")就像你的狗带你过来让你自己杀了,这会杀死你和你的狗。没有你,你无法生存,而你同时做的其他事情也会因为没有你而无法生存而死亡。

这是一个简化的答案,但这基本上就是发生了什么。