Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/Detegr/rust-ctrlc
Easy Ctrl-C handler for Rust projects
https://github.com/Detegr/rust-ctrlc
rust signal-handling
Last synced: about 2 months ago
JSON representation
Easy Ctrl-C handler for Rust projects
- Host: GitHub
- URL: https://github.com/Detegr/rust-ctrlc
- Owner: Detegr
- License: other
- Created: 2015-02-15T13:58:29.000Z (almost 10 years ago)
- Default Branch: master
- Last Pushed: 2024-08-13T15:53:01.000Z (4 months ago)
- Last Synced: 2024-10-23T10:04:14.493Z (2 months ago)
- Topics: rust, signal-handling
- Language: Rust
- Homepage: https://crates.io/crates/ctrlc
- Size: 187 KB
- Stars: 596
- Watchers: 8
- Forks: 79
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- License: LICENSE-APACHE
Awesome Lists containing this project
README
# CtrlC
A simple easy to use wrapper around Ctrl-C signal.[Documentation](http://detegr.github.io/doc/ctrlc/)
## Example usage
In `cargo.toml`:
```toml
[dependencies]
ctrlc = "3.4"
```then, in `main.rs`
```rust
use std::sync::mpsc::channel;
use ctrlc;fn main() {
let (tx, rx) = channel();
ctrlc::set_handler(move || tx.send(()).expect("Could not send signal on channel."))
.expect("Error setting Ctrl-C handler");
println!("Waiting for Ctrl-C...");
rx.recv().expect("Could not receive from channel.");
println!("Got it! Exiting...");
}
```#### Try the example yourself
`cargo build --examples && target/debug/examples/readme_example`## Handling SIGTERM and SIGHUP
Add CtrlC to Cargo.toml using `termination` feature and CtrlC will handle SIGINT, SIGTERM and SIGHUP.## License
Licensed under either of
* Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)
* MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)
at your option.### Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted
for inclusion in the work by you shall be dual licensed as above, without any
additional terms or conditions.## Similar crates
There are alternatives that give you more control over the different signals and/or add async support.
- [signal-hook](https://github.com/vorner/signal-hook)
- [tokio::signal](https://docs.rs/tokio/latest/tokio/signal/index.html)