mirror of
https://github.com/RustPython/RustPython.git
synced 2026-06-09 22:49:57 +09:00
Add signal.getsignal
This commit is contained in:
@@ -46,6 +46,7 @@ fn signal(
|
||||
signal::SaFlags::empty(),
|
||||
signal::SigSet::empty(),
|
||||
);
|
||||
check_signals(vm);
|
||||
unsafe { signal::sigaction(signal_enum, &sig_action) }.unwrap();
|
||||
let old_handler = vm
|
||||
.signal_handlers
|
||||
@@ -54,6 +55,15 @@ fn signal(
|
||||
Ok(old_handler)
|
||||
}
|
||||
|
||||
fn getsignal(signalnum: PyIntRef, vm: &VirtualMachine) -> PyResult<Option<PyObjectRef>> {
|
||||
let signalnum = signalnum.as_bigint().to_i32().unwrap();
|
||||
Ok(vm
|
||||
.signal_handlers
|
||||
.borrow_mut()
|
||||
.get(&signalnum)
|
||||
.map(|x| x.clone()))
|
||||
}
|
||||
|
||||
pub fn check_signals(vm: &VirtualMachine) {
|
||||
for (signum, handler) in vm.signal_handlers.borrow().iter() {
|
||||
if *signum as usize >= NSIG {
|
||||
@@ -71,5 +81,6 @@ pub fn make_module(vm: &VirtualMachine) -> PyObjectRef {
|
||||
|
||||
py_module!(vm, "_signal", {
|
||||
"signal" => ctx.new_rustfunc(signal),
|
||||
"getsignal" => ctx.new_rustfunc(getsignal)
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user