Comments (1)
Can you just kill the process yourself from your handler when entering the handler a second time?
Something like this results in a similar behaviour than your python example:
extern crate ctrlc;
use std::process;
use std::sync::atomic::{AtomicUsize, Ordering};
use std::sync::Arc;
use std::thread;
use std::time::Duration;
fn main() {
let running = Arc::new(AtomicUsize::new(0));
let r = running.clone();
ctrlc::set_handler(move || {
let prev = r.fetch_add(1, Ordering::SeqCst);
if prev == 0 {
println!("Exiting...");
} else {
process::exit(0);
}
}).expect("Error setting Ctrl-C handler");
println!("Running...");
for _ in 1..6 {
thread::sleep(Duration::from_secs(5));
if running.load(Ordering::SeqCst) > 0 {
break;
}
}
}
from rust-ctrlc.
Related Issues (20)
- MultipleHandler's using nohup to run binary HOT 8
- error[E0015]: calls in statics are limited HOT 1
- Add `revert_to_default()` or similar HOT 6
- Missing tag for 3.2.4 HOT 1
- Switch to rustix? HOT 1
- Problem in win11 with powershell 7.4.1 (fine in command prompt) HOT 1
- Compile error when building latest version HOT 4
- Ctrl+C is awkward with Windows HOT 5
- ctrl-c not working when key remapped on linux HOT 2
- v3.1.5 ctrlc::set_handler() weird errors HOT 2
- Need to bump Nix to pick up fix for riscv64 HOT 1
- termination feature infects the entire workspace HOT 4
- Simpler example without busy loop but channels HOT 2
- Handling runs after the loop executes HOT 2
- update nix to 0.23 HOT 2
- Migrate to `windows`/`-sys` crate HOT 2
- Switch back stream to its initial flags ? HOT 2
- Handler code does not finish HOT 2
- Possible memory leak? HOT 1
- Use signal-hook-registry for listening to signals HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from rust-ctrlc.