Skip to content

Commit cab3e2a

Browse files
committed
* 新增根据进程id,强制退出关联进程
* 解决子进程无法退出的bug
1 parent b0ed4fb commit cab3e2a

4 files changed

Lines changed: 31 additions & 17 deletions

File tree

CONTRIBUTING.md

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,19 @@
11
### 更新日志
22

3-
#### JadeV2.2.7 - 2024-06-12
4-
* 使用线程监听程序异常问题,不在阻塞主线程
3+
#### JadeV2.2.8 - 2024-06-13
4+
* 新增根据进程id,强制退出关联进程
55
* 解决子进程无法退出的bug
66
---
77

88
<details onclose>
99
<summary>查看更多更新日志</summary>
1010

11+
#### JadeV2.2.7 - 2024-06-12
12+
* 使用线程监听程序异常问题,不在阻塞主线程
13+
* 解决子进程无法退出的bug
14+
---
15+
16+
1117
#### JadeV2.2.6 - 2024-06-11
1218
* 解决Windows下打包由路径引发的bug
1319
---

jade/jade_threading.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ def exit_gracefully(self, signum, frame):
3232

3333
class MonitorLDKThread(Thread):
3434
def __init__(self, pyldk, JadeLog, ldkqueue, time=60 * 60, max_session_size=1, feature_id_list=None,
35-
max_featuer_id=None, exit_queue=None):
35+
max_featuer_id=None, process_id_queue=None):
3636
self.pyldk = pyldk
3737
self.JadeLog = JadeLog
3838
self.ldkqueue = ldkqueue
@@ -41,13 +41,13 @@ def __init__(self, pyldk, JadeLog, ldkqueue, time=60 * 60, max_session_size=1, f
4141
self.max_featuer_id = max_featuer_id
4242
self.max_session_size = max_session_size
4343
self.handlequeue = Queue(maxsize=max_session_size)
44-
self.exit_queue = exit_queue
44+
self.process_id_queue = process_id_queue
4545
super(MonitorLDKThread, self).__init__()
4646
self.start()
4747

4848
def exit(self):
4949
self.JadeLog.ERROR("加密狗异常,程序退出")
50-
Exit(-800, self.exit_queue)
50+
Exit(-800, self.process_id_queue)
5151

5252
def logout(self):
5353
handle = self.handlequeue.get()

jade/jade_tools.py

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import signal
2121
import string
2222
import random
23+
import psutil
2324

2425
def zh_ch(string):
2526
"""
@@ -29,15 +30,13 @@ def zh_ch(string):
2930
"""
3031
return string.encode("gbk").decode('UTF-8', errors='ignore')
3132

32-
def Exit(exit_number,exit_queue=None):
33+
def Exit(exit_number,process_id_queue=None):
3334
"""
3435
强制结束
3536
"""
36-
if exit_queue:
37-
for i in range(exit_queue.qsize()):
38-
process = exit_queue.get()
39-
process.kill()
4037
time.sleep(1)
38+
if process_id_queue:
39+
clear_process_queue(process_id_queue)
4140
os._exit(exit_number)
4241

4342
def getNumberofString(string):
@@ -485,15 +484,12 @@ def GetExitSignal(func,*args):
485484
while not killer.kill_now:
486485
time.sleep(1)
487486
Exit(-1)
488-
def ldk_release(ldkqueue,JadeLog=None,exit_queue=None):
487+
def ldk_release(ldkqueue,JadeLog=None,process_id_queue=None):
489488
if JadeLog:
490489
JadeLog.DEBUG("准备释放加密狗登录", True)
491-
if exit_queue:
490+
if process_id_queue:
492491
JadeLog.DEBUG("准备清除子进程",True)
493-
if exit_queue:
494-
for i in range(exit_queue.qsize()):
495-
process = exit_queue.get()
496-
process.kill()
492+
clear_process_queue(process_id_queue)
497493
if ldkqueue.qsize() > 0:
498494
pyldk, handle = ldkqueue.get()
499495
pyldk.adapter.logout(handle)
@@ -508,6 +504,18 @@ def get_file_size(filename):
508504
size = os.path.getsize(filename)
509505
return size
510506

507+
def clear_process_queue(process_id_queue):
508+
for i in range(process_id_queue.qsize()):
509+
clear_process(process_id_queue.get())
510+
511+
512+
def clear_process(process_id):
513+
process = psutil.Process(process_id)
514+
for proc in process.children(recursive=True):
515+
proc.kill()
516+
process.kill()
517+
518+
511519
if __name__ == '__main__':
512520
key = "HgEWN6tv_HeVqbh7M_Q-XT6NCVETFeIspgE17Xh30Co="
513521
#encryption_model("container_det_768-576_slim.onnx","HgEWN6tv_HeVqbh7M_Q-XT6NCVETFeIspgE17Xh30Co=")

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ def get_app_version():
5050
package_data={'': ['*Run','*png']},
5151
include_package_data=True,
5252
platforms="any",
53-
install_requires=["easycython","pyinstaller","cryptography==3.4.8","cffi"] # 这个项目需要的第三方库
53+
install_requires=["easycython","pyinstaller","cryptography==3.4.8","cffi","psutil"] # 这个项目需要的第三方库
5454
)
5555

5656

0 commit comments

Comments
 (0)