diff --git a/vm/src/stdlib/signal.rs b/vm/src/stdlib/signal.rs index 83e9d861b..73c9d978e 100644 --- a/vm/src/stdlib/signal.rs +++ b/vm/src/stdlib/signal.rs @@ -110,28 +110,28 @@ pub(crate) mod _signal { module: &Py, vm: &VirtualMachine, ) { - let sig_dfl = vm.new_pyobj(SIG_DFL as u8); - let sig_ign = vm.new_pyobj(SIG_IGN as u8); - - for signum in 1..NSIG { - let handler = unsafe { libc::signal(signum as i32, SIG_IGN) }; - if handler != SIG_ERR { - unsafe { libc::signal(signum as i32, handler) }; - } - let py_handler = if handler == SIG_DFL { - Some(sig_dfl.clone()) - } else if handler == SIG_IGN { - Some(sig_ign.clone()) - } else { - None - }; - vm.signal_handlers.as_deref().unwrap().borrow_mut()[signum] = py_handler; - } - - let int_handler = module - .get_attr("default_int_handler", vm) - .expect("_signal does not have this attr?"); if vm.state.settings.install_signal_handlers { + let sig_dfl = vm.new_pyobj(SIG_DFL as u8); + let sig_ign = vm.new_pyobj(SIG_IGN as u8); + + for signum in 1..NSIG { + let handler = unsafe { libc::signal(signum as i32, SIG_IGN) }; + if handler != SIG_ERR { + unsafe { libc::signal(signum as i32, handler) }; + } + let py_handler = if handler == SIG_DFL { + Some(sig_dfl.clone()) + } else if handler == SIG_IGN { + Some(sig_ign.clone()) + } else { + None + }; + vm.signal_handlers.as_deref().unwrap().borrow_mut()[signum] = py_handler; + } + + let int_handler = module + .get_attr("default_int_handler", vm) + .expect("_signal does not have this attr?"); signal(libc::SIGINT, int_handler, vm).expect("Failed to set sigint handler"); } }