[英]Program continues to execute after exit
从用户读入IP地址后,如果无效,我想退出。 似乎在退出之前继续执行该函数中的代码。 我希望它立即退出。 我什至尝试在期望中使用quit()和exit(),但是都具有相同的结果。
功能:
def f_validate_args(test_args):
try:
socket.inet_aton(test_args.server)
except socket.error as SE:
raise SystemExit(SE)
print 'Everything is OK!'
主要:
validation = f_validate_args(io_args)
print(io_args)
使用无效的IP运行程序:
Everything is OK
illegal IP address string passed to inet_aton
使用有效IP运行程序:
Everything is OK!
Namespace(...)
您可以尝试使用os.system
软件包,从bash中杀死它:
import os
def f_validate_args(test_args):
try:
socket.inet_aton(test_args.server)
except socket.error as SE:
os.system('pkill your_program_name')
raise SystemExit(SE)
可能有一些资源(与套接字相关)会阻止程序正常退出。
也许很脏,但一定可以正常工作:致电os._exit
。 它调用低级exit
而不使用sys.exit
使用的异常机制。
def f_validate_args(test_args):
try:
socket.inet_aton(test_args.server)
except socket.error as SE:
print(str(SE))
os._exit(1)
print('Everything is OK!')
当然,python没有机会优雅地退出。 仅当您不能这样做时,才这样做。
如果提供了无效的IP,该函数将引发OSError。 因此,您需要抓住它
def f_validate_args(test_args):
try:
socket.inet_aton(test_args.server)
except OSError:
# your error handling here
except socket.error as SE:
raise SystemExit(SE)
print 'Everything is OK!'
来源: https : //docs.python.org/3/library/socket.html#socket.inet_aton
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.