2 releases

0.1.1 Nov 16, 2023
0.1.0 Nov 14, 2023

#730 in Operating systems

MIT license

8KB
112 lines

Paw

Paw is a Rust library for monitoring and controlling child processes. It provides a simple API for spawning processes, reading their output, and getting their memory and CPU usage.

Usage

To use Paw, first create a new instance of the Paw struct. You can specify the command to run, the arguments to pass to the command, and the duration to monitor the process for.

Once you have a Paw instance, you can call the watch() method to start monitoring the process. The watch() method takes a callback function as an argument. The callback function will be called periodically with the current state of the process.

The PawResult struct contains the following information about the process:

  • info: Information about the process, such as its memory usage, CPU usage, and uptime.
  • process: Information about the process command, such as the command name and arguments.

The PawDone struct contains the following information about the process:

  • stdout: The standard output of the process.
  • code: The exit code of the process.

Example

The following example shows how to use Paw to monitor a Node.js process:

use paw::{Paw, PawResult};

let paw = Paw::new("node", &["tests/test.js"], 500);
let callback = move |result: PawResult| {
  println!("{:?}", result);
};

match paw.watch(callback) {
  Ok(result) => println!("{:?}", result),
  Err(error) => println!("{error}"),
}

Running the tests

To run the tests, simply run the following command:

cargo test

Dependencies

~2.6–3.5MB
~79K SLoC