25 lines
885 B
Rust
25 lines
885 B
Rust
#![allow(clippy::print_literal)]
|
|
|
|
extern crate procfs;
|
|
|
|
/// A very basic clone of `ps` on Linux, in the simple no-argument mode.
|
|
/// It shows all the processes that share the same tty as our self
|
|
|
|
fn main() {
|
|
let mestat = procfs::process::Process::myself().unwrap().stat().unwrap();
|
|
let tps = procfs::ticks_per_second().unwrap();
|
|
|
|
println!("{: >10} {: <8} {: >8} {}", "PID", "TTY", "TIME", "CMD");
|
|
|
|
let tty = format!("pty/{}", mestat.tty_nr().1);
|
|
for p in procfs::process::all_processes().unwrap() {
|
|
let prc = p.unwrap();
|
|
if let Ok(stat) = prc.stat() {
|
|
if stat.tty_nr == mestat.tty_nr {
|
|
// total_time is in seconds
|
|
let total_time = (stat.utime + stat.stime) as f32 / (tps as f32);
|
|
println!("{: >10} {: <8} {: >8} {}", stat.pid, tty, total_time, stat.comm);
|
|
}
|
|
}
|
|
}
|
|
}
|