1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
use crate::Error;

use sysinfo;

pub use sysinfo::{Process, ProcessExt, Signal, System, SystemExt};

pub fn get_parent_process(system: &mut sysinfo::System) -> Result<&Process, Error> {
  let pid = sysinfo::get_current_pid().unwrap();
  system.refresh_process(pid);
  let current_process = system
    .get_process(pid)
    .ok_or(Error::ParentProcess)?;
  let parent_pid = current_process.parent().ok_or(Error::ParentPID)?;
  let parent_process = system
    .get_process(parent_pid)
    .ok_or(Error::ParentProcess)?;

  println!("{}", pid);
  Ok(parent_process)
}