fix: 临时修复线程退出时处理tty前台进程组产生panic的bug (#985)

This commit is contained in:
LoGin 2024-10-18 17:47:28 +08:00 committed by GitHub
parent dcd345f6d3
commit cae6182257
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 5 additions and 6 deletions

View File

@ -166,6 +166,8 @@ impl ProcessManager {
let pcb = ProcessControlBlock::new(name, new_kstack);
// TODO: 注意这里设置tty的操作不符合Linux的行为毕竟创建进程不一定要fork也可以用clone来创建
// 正确做法应该是在实现进程组之后去管理前台进程组。
pcb.sig_info_mut()
.set_tty(current_pcb.sig_info_irqsave().tty());

View File

@ -425,12 +425,9 @@ impl ProcessManager {
// TODO 由于未实现进程组tty记录的前台进程组等于当前进程故退出前要置空
// 后续相关逻辑需要在SYS_EXIT_GROUP系统调用中实现
pcb.sig_info_irqsave()
.tty()
.unwrap()
.core()
.contorl_info_irqsave()
.pgid = None;
if let Some(tty) = pcb.sig_info_irqsave().tty() {
tty.core().contorl_info_irqsave().pgid = None;
}
pcb.sig_info_mut().set_tty(None);
drop(pcb);