1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
use std::io; use heim_runtime as rt; use crate::{Pid, ProcessError, ProcessResult}; pub use crate::sys::unix::{Environment, IntoEnvironmentIter}; pub async fn environment(pid: Pid) -> ProcessResult<Environment> { let path = format!("/proc/{}/environ", pid); match rt::fs::read(path).await { Ok(contents) => Ok(Environment::from_bytes(&contents)), Err(e) if e.kind() == io::ErrorKind::NotFound => Err(ProcessError::NoSuchProcess(pid)), Err(e) if e.kind() == io::ErrorKind::PermissionDenied => { Err(ProcessError::AccessDenied(pid)) } Err(e) => Err(e.into()), } }