power_rules_daemon/
process.rs1use procfs::process::all_processes;
4use anyhow::{Context, Result};
5
6pub fn is_process_running(process_name: &str) -> bool {
8 match try_is_process_running(process_name) {
9 Ok(running) => running,
10 Err(e) => {
11 eprintln!("Process check error: {}", e);
12 false
13 }
14 }
15}
16
17fn try_is_process_running(process_name: &str) -> Result<bool> {
19 let processes = all_processes().context("Failed to list processes")?;
20
21 for process in processes {
22 let process = process.context("Failed to read process info")?;
23
24 if let Ok(stat) = process.stat() {
26 if stat.comm.contains(process_name) {
27 return Ok(true);
28 }
29 }
30
31 if let Ok(cmdline) = process.cmdline() {
33 if cmdline.iter().any(|arg| arg.contains(process_name)) {
34 return Ok(true);
35 }
36 }
37 }
38
39 Ok(false)
40}