日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python 程序中断_有趣的Python处理程序中断信号

發(fā)布時間:2025/5/22 python 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 程序中断_有趣的Python处理程序中断信号 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

我正在做一個編程項(xiàng)目——用Python編寫一個基本的P2P文件共享應(yīng)用程序。我使用兩個線程:一個主線程調(diào)用select并等待來自套接字列表的輸入系統(tǒng)標(biāo)準(zhǔn)(接收鍵入的命令)和一個助手線程,從隊(duì)列中獲取狀態(tài)更新消息并打印它們。(這是唯一能打印任何東西的東西)

我還需要捕捉標(biāo)準(zhǔn)SIGINT并處理它以優(yōu)雅地退出。我有一個quit方法可以做到這一點(diǎn);輸入'quit'作為命令就可以了。所以在主線程中,我嘗試將這個方法設(shè)置為SIGINT的處理程序。據(jù)我所知,進(jìn)程捕捉到信號并調(diào)用quit方法。helper線程打印一條消息,確認(rèn)它正在退出。但是,我從主線程收到以下錯誤消息:Traceback (most recent call last):

File "peer.py", line 226, in

main()

File "peer.py", line 223, in main

p.run()

File "peer.py", line 160, in run

readables, writables, exceptions = select(self.sockets, [], [])

select.error: (4, 'Interrupted system call')

之后程序仍然退出。而在沒有信號處理程序的情況下,發(fā)送一個SIGINT會得到以下結(jié)果:

^{pr2}$

無法終止程序;我必須停止并終止它。這是令人困惑的,因?yàn)镾IGINT似乎只在被我的自定義方法捕獲時才中斷select調(diào)用。(它只在打印隊(duì)列上放置一條消息并設(shè)置一個“done”變量)有人知道這是怎么發(fā)生的嗎?同時使用信號處理程序和線程是不是一個壞主意?在

總結(jié)

以上是生活随笔為你收集整理的python 程序中断_有趣的Python处理程序中断信号的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。