//! Runs skim repeatedly to check that runs clean up their worker threads. use skim::Skim; use skim::prelude::SkimOptionsBuilder; // Hint: use `ps -T -p $(pgrep -f target/debug/examples/multiple_runs)` to watch threads while the // different invocations run, and make sure none is leaking through fn main() { for i in 0..3 { let opts = SkimOptionsBuilder::default() .header(format!("run {i}")) .cmd("cat benches/fixtures/10M.txt") .build() .unwrap(); let res = Skim::run_with(opts, None).unwrap(); #[cfg(target_os = "linux")] unsafe { nix::libc::malloc_trim(0); } println!( "run {i}: {:?}, sleeping for 5 secs", res.selected_items.first().map(|x| x.output()) ); std::thread::sleep(std::time::Duration::from_secs(5)); } }