summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAram Drevekenin <aram@poor.dev>2019-09-17 14:14:51 +0200
committerAram Drevekenin <aram@poor.dev>2019-09-17 14:14:51 +0200
commite72f0146154a732dee1de43e8b1527338f504a47 (patch)
tree3d5f96dae80b5e957895806140eccc33ee4aa2f7 /src
parent89c8e48909eafb819b99778b5b408b5f72f60860 (diff)
refactor(linux): read proc os directly
Diffstat (limited to 'src')
-rw-r--r--src/os/linux.rs15
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,
}
}