use std::process::ExitCode;
use syd::confine::fork_fast;
#[cfg(all(
not(coverage),
not(feature = "prof"),
not(target_os = "android"),
not(target_arch = "riscv64"),
target_page_size_4k,
target_pointer_width = "64"
))]
#[global_allocator]
static GLOBAL: hardened_malloc::HardenedMalloc = hardened_malloc::HardenedMalloc;
#[cfg(feature = "prof")]
#[global_allocator]
static GLOBAL: tcmalloc::TCMalloc = tcmalloc::TCMalloc;
syd::main! {
use lexopt::prelude::*;
syd::set_sigpipe_dfl()?;
let mut parser = lexopt::Parser::from_env();
#[expect(clippy::never_loop)]
while let Some(arg) = parser.next()? {
match arg {
Short('h') => {
help();
return Ok(ExitCode::SUCCESS);
}
_ => return Err(arg.unexpected().into()),
}
}
loop {
unsafe { fork_fast() };
}
}
fn help() {
println!("Usage: syd-fork [-h]");
println!("Fork fast in an infinite loop.");
println!("WARNING: DO NOT TRY THIS AT HOME!");
println!("WARNING: USE THIS AT YOUR OWN RISK!");
println!("WARNING: USE THIS ONLY TO STRESS-TEST YOUR PID-LIMITER!");
}