1 ! Copyright (C) 2012 Doug Coleman.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: accessors arrays assocs continuations io.directories kernel
4 math.parser sequences splitting system tools.ps unix.linux.proc ;
7 ! If cmdline is empty, read the filename from /proc/pid/stat
8 : ps-cmdline ( path -- string )
9 dup parse-proc-pid-cmdline [
10 parse-proc-pid-stat filename>>
14 nip "\0" split harvest " " join
17 : safe-ps-cmdline ( path -- string/f )
18 [ ps-cmdline ] [ 2drop f ] recover ;
20 M: linux ps ( -- assoc )
22 "." directory-files [ string>number ] filter
23 [ dup safe-ps-cmdline 2array ] map sift-values