Skip to content

A tiny crate for checking if Ctrl-C was pressed — no handlers, no AtomicBool.

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

malt03/ctrlc-tiny

Repository files navigation

ctrlc-tiny

Crates.io Version docs.rs Test

A tiny crate for checking if Ctrl-C was pressed.

No handlers to set. No threads. No AtomicBool.
Just call init_ctrlc() once, then check is_ctrlc_received() in your loop.

✨ Features

  • Signal-safe SIGINT handler
  • No threads, no allocations
  • No runtime Rust dependencies
  • Ideal for polling-based CLI tools

🚀 Usage

Add to your Cargo.toml:

ctrlc-tiny = "0.1"

Example:

fn main() -> std::io::Result<()> {
    ctrlc_tiny::init_ctrlc()?;

    loop {
        if ctrlc_tiny::is_ctrlc_received() {
            println!("Ctrl-C detected");
            break;
        }
        // work...
    }

    Ok(())
}

Need to detect Ctrl-C more than once? See examples/multi_ctrlc.rs.

🔍 Why not use ctrlc?

ctrlc is great when you want to run custom logic when Ctrl-C is pressed.

But if you just want to check whether Ctrl-C was pressed, it can feel more involved than necessary.

ctrlc-tiny keeps things simple: a single flag you can poll.

🔒 Signal Safety

  • Internally uses a volatile sig_atomic_t flag — safe in POSIX signal handlers.
  • No heap, no threads — fully signal-safe by design.
  • The flag can be reset via reset_ctrlc_received(), but may race with the signal handler if SIGINT is received at the same time.

🛠️ Platform Support

  • ✅ Linux
  • ✅ macOS
  • ❌ Windows (no plans to add support)

📝 Note

Honestly, Arc, AtomicBool, and even the internals of the ctrlc crate don't pose any real-world performance issues.

This crate was created to scratch a personal itch — to get rid of a subjective sense of overkill and a bit of boilerplate.
In that sense, I’m quite happy with how this crate turned out.

📦 License

Licensed under either of:

  • MIT
  • Apache 2.0

See LICENSE-MIT or LICENSE-APACHE.

About

A tiny crate for checking if Ctrl-C was pressed — no handlers, no AtomicBool.

Topics

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Packages

No packages published