From 4f8f269bafac46ec754cf6f4f2ef02df0b802025 Mon Sep 17 00:00:00 2001 From: LoGin Date: Mon, 2 Dec 2024 00:39:52 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E8=A7=A3=E5=86=B3=E8=BF=9B=E7=A8=8B?= =?UTF-8?q?=E9=80=80=E5=87=BA=E6=97=B6=E6=B2=A1=E6=9C=89=E4=B8=BB=E5=8A=A8?= =?UTF-8?q?=E9=87=8A=E6=94=BEfdtable=E7=9A=84=E9=97=AE=E9=A2=98=20(#1069)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 会导致http server被kill时,pcb没有drop Signed-off-by: longjin --- kernel/src/process/mod.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/kernel/src/process/mod.rs b/kernel/src/process/mod.rs index 540ebe6b..bdf3e7c5 100644 --- a/kernel/src/process/mod.rs +++ b/kernel/src/process/mod.rs @@ -426,6 +426,7 @@ impl ProcessManager { } drop(thread); unsafe { pcb.basic_mut().set_user_vm(None) }; + pcb.exit_files(); // TODO 由于未实现进程组,tty记录的前台进程组等于当前进程,故退出前要置空 // 后续相关逻辑需要在SYS_EXIT_GROUP系统调用中实现 @@ -1055,6 +1056,11 @@ impl ProcessControlBlock { pub fn set_nsproxy(&self, nsprsy: NsProxy) { *self.nsproxy.write() = nsprsy; } + + /// Exit fd table when process exit + fn exit_files(&self) { + self.basic.write_irqsave().set_fd_table(None); + } } impl Drop for ProcessControlBlock {