feat(tty): 实现发送SIGINT终止信号 (#952)

* 实现SIGINT终止信号传递

* 添加test_sigint测试程序
This commit is contained in:
MemoryShore
2024-10-09 19:02:14 +08:00
committed by GitHub
parent 52dc4c3ee8
commit a8753f8fff
9 changed files with 103 additions and 10 deletions

View File

@ -22,15 +22,13 @@ impl TtyJobCtrlManager {
let mut ctrl = core.contorl_info_irqsave();
let pcb = ProcessManager::current_pcb();
// todo 目前将pgid设置为pid
ctrl.pgid = Some(pcb.pid());
ctrl.session = Some(pcb.pid());
ctrl.session = Some(pcb.basic().sid());
assert!(pcb.sig_info_irqsave().tty().is_none());
let mut singal = pcb.sig_info_mut();
drop(ctrl);
singal.set_tty(tty);
singal.set_tty(Some(tty.clone()));
}
/// ### 检查tty
@ -99,7 +97,7 @@ impl TtyJobCtrlManager {
if current.sig_info_irqsave().tty().is_none()
|| !Arc::ptr_eq(&current.sig_info_irqsave().tty().clone().unwrap(), &tty)
|| ctrl.session.is_none()
|| ctrl.session.unwrap() != current.pid()
|| ctrl.session.unwrap() != current.basic().sid()
{
return Err(SystemError::ENOTTY);
}

View File

@ -792,7 +792,6 @@ impl NTtyData {
}
ctrl_info.pgid = None;
ctrl_info.session = None;
if !termios.local_mode.contains(LocalMode::NOFLSH) {
// 重置