#signal #sigint

signalbool

A simple crate to catch signals and set a boolean flag for later use

11 releases

0.2.5 Jun 21, 2022
0.2.4 Jul 9, 2020
0.2.3 Jun 28, 2019
0.2.2 Aug 8, 2018
0.1.3 May 30, 2017

#4 in #boolean-flag

Download history 29/week @ 2023-11-01 17/week @ 2023-11-08 24/week @ 2023-11-15 28/week @ 2023-11-22 46/week @ 2023-11-29 22/week @ 2023-12-06 26/week @ 2023-12-13 25/week @ 2023-12-20 18/week @ 2023-12-27 21/week @ 2024-01-03 14/week @ 2024-01-10 15/week @ 2024-01-17 30/week @ 2024-01-24 20/week @ 2024-01-31 13/week @ 2024-02-07 85/week @ 2024-02-14

153 downloads per month
Used in soapysdr

BSD-3-Clause

8KB
90 lines

A simple crate to catch signals and set a boolean flag for later use.

This crate doesn't create threads behind the scene.

Crates.io Version GitHub stars

Example

Here is a program that sleeps until it receives three SIGINT signals.

extern crate signalbool;
extern crate nix;

use nix::unistd::sleep;

fn main() {
  let mut sb = signalbool::SignalBool::new(
    &[signalbool::Signal::SIGINT], signalbool::Flag::Interrupt,
  ).unwrap();
  let mut count = 0;
    
  loop {
    sleep(10);
    if sb.caught() {
      println!("Caught SIGINT.");
      count += 1;
      sb.reset();
      if count == 3 {
        break;
      }
    }
  }
}

lib.rs:

A simple crate to catch signals and set a boolean flag for later use.

This crate doesn't create threads behind the scene.

Crates.io Version GitHub stars

Example

Here is a program that sleeps until it receives three SIGINT signals.

use nix::unistd::sleep;

let mut sb = signalbool::SignalBool::new(
  &[signalbool::Signal::SIGINT], signalbool::Flag::Interrupt,
).unwrap();
let mut count = 0;

loop {
  sleep(10);
  if sb.caught() {
    println!("Caught SIGINT.");
    count += 1;
    sb.reset();
    if count == 3 {
      break;
    }
  }
}

Dependencies

~1.5MB
~35K SLoC