diff options
author | Aram Drevekenin <aram@poor.dev> | 2019-09-17 14:14:51 +0200 |
---|---|---|
committer | Aram Drevekenin <aram@poor.dev> | 2019-09-17 14:14:51 +0200 |
commit | e72f0146154a732dee1de43e8b1527338f504a47 (patch) | |
tree | 3d5f96dae80b5e957895806140eccc33ee4aa2f7 /src | |
parent | 89c8e48909eafb819b99778b5b408b5f72f60860 (diff) |
refactor(linux): read proc os directly
Diffstat (limited to 'src')
-rw-r--r-- | src/os/linux.rs | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/os/linux.rs b/src/os/linux.rs index f6f1eac..3d7c41e 100644 --- a/src/os/linux.rs +++ b/src/os/linux.rs @@ -2,7 +2,8 @@ use ::netstat::{get_sockets_info, AddressFamilyFlags, ProtocolFlags, SocketInfo} use ::pnet::datalink::Channel::Ethernet; use ::pnet::datalink::DataLinkReceiver; use ::pnet::datalink::{self, NetworkInterface}; -use ::procfs::Process; +use ::std::fs::File; +use ::std::io::prelude::*; use ::std::io::stdin; use ::termion::event::Event; use ::termion::input::TermRead; @@ -36,9 +37,17 @@ pub fn get_interface(interface_name: &str) -> Option<NetworkInterface> { .find(|iface| iface.name == interface_name) } +fn read_proc_comm(id: i32) -> std::io::Result<String> { + let filename = format!("/proc/{}/comm", id); + let mut file = File::open(filename)?; + let mut contents = String::new(); + file.read_to_string(&mut contents)?; + Ok(contents) +} + pub fn get_process_name(id: i32) -> Option<String> { - match Process::new(id) { - Ok(process) => Some(process.stat.comm), + match read_proc_comm(id) { + Ok(contents) => Some(contents), Err(_) => None, } } |