Skip to content
Fetching contributors…
Cannot retrieve contributors at this time
119 lines (91 sloc) 3.38 KB
== Description
A Ruby interface for gathering process information.
== Prerequisites
* Test::Unit 2.x (development only)
== Supported Platforms
* Windows 2000 or later
* Linux 2.6+
* FreeBSD
* Solaris 8+
* HP-UX 10+
* OS X 10.4+
* AIX 5.3+
== Installation
gem install sys-proctable
You may need to specify a platform in some cases. For example:
gem install sys-proctable --platform mswin32 # Windows
gem install sys-proctable --platform sunos # Solaris
gem install sys-proctable --platform linux # Linux
gem install sys-proctable --platform freebsd # FreeBSD
== Synopsis
require 'sys/proctable'
include Sys
# Everything{ |p|
puts p.comm
# ...
# Just one process
s =
puts s.comm
# ...
# Return the results as an array of ProcTableStructs
a =
a.each do |p|
# ...
== Notes
Windows users may pass a host name as a second argument to get process
information from a different host. This relies on the WMI service running.
== Known Issues
=== FreeBSD
A kvm interface is used. That means the owner of the process using the
sys-proctable library needs to be a member of the kvm group (or root).
=== Solaris
The cmdline member on Solaris is limited to 80 characters unless you (or
your program) own the process. This is a Solaris design flaw/feature.
=== Thread Safety
I am not currently using a thread-safe version of readdir() for versions
of this library that use C. I am not especially concerned about it either.
If you are trying to read information out of /proc from different threads
at the same time there is something seriously wrong with your code logic.
Using readdir_r() still won't solve all potential thread safety issues anyway.
== Future Plans
Add support for NetBSD and OpenBSD.
Convert existing C code to FFI.
== Acknowledgements
This library was originally based on the Perl module Proc::ProcessTable
by Dan Urist. Many ideas, as well as large chunks of code, were taken
from his work. So, a big THANK YOU goes out to Dan Urist.
A big thanks also goes out to Mike Hall who was very helpful with ideas,
logic and testing.
Thanks also go to Sean Chittenden for providing an account on one of his
FreeBSD machines. This is how the FreeBSD support was (initially) added.
Thanks go to James Hranicky for providing a patch that grabs name, eid,
euid, gid and guid info in the Linux version, along with some general
debugging help.
Thanks go to David Felstead for the original OS X code. Thanks also go
to Matthias Zirnstein for adding cmdline support for OS X.
Finally I'd like to thank all the folks who have submitted bug reports
and/or patches.
== Help Wanted
I do not have access to all platforms. If your platform is not supported
then you will need to either submit a patch or give me a remote account
on a box with a compiler so that I can write the code.
== More documentation
See the documentation under the 'doc' directory for more information,
including platform specific notes and issues.
== License
Artistic 2.0
== Copyright
(C) 2003-2016 Daniel J. Berger
All Rights Reserved.
== Contributions
Although this library is free, please consider having your company
setup a gittip if used by your company professionally.
== Author
Daniel J. Berger
Something went wrong with that request. Please try again.