操作系统系统("退出")的问题



我在玩游戏,我用Python编码,我有ubuntu/linux。 我在使用os.system("清除")时遇到问题,它不能很好地工作。 这是代码:

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

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

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

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

对两者之间区别的更深入的解释(如果您可以使其更正确或更容易理解,请编辑)。

当你在 Linux/Mac/Windows 上运行一个程序时,有两个程序在运行,shell 和你自己的程序。 程序作为 shell 的"子进程"运行。这意味着外壳"拥有"它。如果程序退出,shell 仍处于运行状态。

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

然而,os.system("exit")就像你的狗接管你并让你自杀,这杀死了你和你的狗。没有你,他就活不下去,你同时做的其他事情也会死,因为没有你,他们也无法生存。

这是一个简化的答案,但这本质上就是正在发生的事情。

最新更新