草庐IT

CTRL_CLOSE_EVENT

全部标签

python - 如何在 python 交互式控制台中捕获 'Ctrl-D'?

我有一个在后台线程中运行的服务器,我使用python-i启动它,这样我可以获得一个交互式控制台,我可以在其中输入命令并轻松调试它。但是当我按下Ctrl-D时,由于服务器仍在后台线程中运行,控制台不会退出。如何捕获Ctrl-D事件,以便关闭服务器并正常退出?我知道如何使用信号捕获Ctrl-C,但由于我习惯按Ctrl-D,我通常会遇到一个“卡住”的终端,这真的很烦人。谢谢!服务器代码(简化)是这样的:importthreadingimportatexitclassWorkerThread(threading.Thread):def__init__(self):super(WorkerThr

Python close_fds 不清楚

我在Python27中遇到了close_fds的问题,所以在做了一些研究之后我发现了这个example:fromsubprocessimportPopen,PIPE,STDOUTp1=Popen(['cat'],stdin=PIPE,stdout=PIPE)p2=Popen(['grep','a'],stdin=p1.stdout,stdout=PIPE)p1.stdin.write("aaaaaaaaaaaaaaaa\n")p1.stdin.close()p2.stdout.read()我的问题是我无法理解为什么p1.stdin保持打开状态。p1不是p2的子级,因此p2不应继承除p1

带线程的 Python 程序无法捕获 CTRL+C

我正在编写一个python脚本,它需要运行一个监听网络套接字的线程。我在使用Ctrl+c使用下面的代码杀死它时遇到了问题:#!/usr/bin/pythonimportsignal,sys,threadingTHREADS=[]defhandler(signal,frame):globalTHREADSprint"Ctrl-C....Exiting"fortinTHREADS:t.alive=Falsesys.exit(0)classthread(threading.Thread):def__init__(self):self.alive=Truethreading.Thread.__

python - Python在接收​​到Ctrl+C后会执行finally block吗

如果您使用Ctrl+C停止python脚本,它会执行任何finallyblock,还是会在原处停止脚本? 最佳答案 好吧,答案主要是视情况而定。这是实际发生的情况:Python在try:...finally:block中执行代码发出Ctrl-C并转换为KeyboardInterrupt异常处理被中断,控制传递到finallyblock所以乍一看,一切都按预期工作。但是……当用户(不是你,而是其他人...)想要中断任务时,他通常会多次按下Ctrl-C。第一个将在finallyblock中分支执行。如果另一个Ctrl-C出现在final

python - close() 从不关闭 pymongo 中的连接?

我使用MongoDB并通过pymongo连接到它。这是我的代码:>>>importpymongo>>>con=pymongo.Connection('localhost',27017)>>>con.database_names()['local','bookdb']>>>con.close()>>>con.database_names()['local','bookdb']我使用con.close()断开与MongoDB的连接,但之后,我仍然可以使用con.database_names()查看数据库列表.为什么?它永远不会断开与MongoDB服务器的连接。为什么close()不起作用?

python - SQLAlchemy "event.listen"适用于所有型号

我在每个模型中都有字段created_by和updated_by。这些字段会自动填充sqlalchemy.event.listen(以前称为MapperExtension)。对于每个模型,我写:event.listen(Equipment,'before_insert',get_created_by_id)event.listen(Equipment,'before_update',get_updated_by_id)当模型很多时,代码会变得丑陋。是否可以立即将event.listen应用于所有模型或多个模型?UPD:我正在尝试这样做:importpylonsfromsqlalchem

python - 使用 matplotlib 中的 show() 和 close()

我在使用matplotlib时遇到了一些问题....我无法一次打开2个窗口来显示带有show()的图像,似乎脚本在我使用show的那一行停止并且不会继续,除非我手动关闭显示。有没有办法关闭脚本中的图形窗口?以下代码没有按我的意愿运行:importmatplotlib.pyplotaspltfromtimeimportsleepfromscipyimporteyeplt.imshow(eye(3))plt.show()sleep(1)plt.close()plt.imshow(eye(2))plt.show()我预计第一个窗口会在1秒后关闭,然后打开第二个窗口,但直到我自己关闭它后窗El

微软 Windows 10/11 小技巧:按住 CTRL 键可让任务管理器应用进程静止不动

许多Windows用户可能不知道,任务管理器有一个非常好用的快捷键,可以使其界面暂停更新,从而阻止上面显示的应用进程不停地乱跳,这样就能更容易选中某个应用来将其杀掉。这个快捷键就是按住CTRL键,在 Windows10 和 Windows11 上都管用,也许在更旧的Windows版本上也可以(未验证)。这个实用的技巧是由微软员工JenGentleman分享的,她是Windows工程团队的一员,经常在社交媒体上发布有关Windows的有用的快捷键和技巧。如果你经常使用任务管理器来结束出现故障的应用程序,微软正在开发一个在Windows11中不用任务管理器就可以关闭应用程序的强制退出功能,只需要在

python - 如何在 python 程序中关闭 Ctrl-C 上的套接字连接

s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)s.bind((HOST,PORT))s.listen(1)any_connection=FalsewhileTrue:try:conn,addr=s.accept()data=conn.recv(1024)any_connection=True#keeplookingifnotdata:continuepid=os.fork()ifpid==0:server_process(data,conn)exceptKeyboardInterrupt:breakifany_connection:

python - 为什么我必须按两次 Ctrl+D 才能关闭标准输入?

我有以下Python脚本,它读取数字并在输入不是数字时输出错误。importfileinputimportsysforlinein(txt.strip()fortxtinfileinput.input()):ifnotline.isdigit():sys.stderr.write("ERROR:notanumber:%s\n"%line)如果我从stdin获得输入,我必须按Ctrl+D两次来结束程序。为什么?当我单独运行Python解释器时,我只需按一次Ctrl+D。bash$pythontest.py12foo45ERROR:notanumber:foobash$