11 releases (5 breaking)

0.18.2 Feb 5, 2023
0.18.1 Feb 3, 2023
0.17.1 Nov 23, 2022
0.16.0 Aug 28, 2022
0.13.1 Jul 9, 2019

#12 in #process-manager

LGPL-3.0-or-later

42KB
584 lines

R50

Project

  • License: GNU Lesser General Public License, either version 3, or (at your option) any later version.
  • This project follows Semantic Versioning 2.0.0

Features

This project helps with resource management of process(es) running on personal Linux machines.

It provides 2 programs: a server, and a client.

  • The server program binds to an abstract Linux socket, then listens for clients.

  • Each client is expected to send:

    • One single command (with optional arguments).
    • Its credentials: process ID, user ID, group ID.
    • Its standard streams: input, output, error.
    • Its current working directory and environment variables.

The command will be run by server under client's credentials, with standard streams routed to client's. The new process ID will be sent back to client. So when the user uses Ctrl-C, client can forward it to that process ID.

The idea is to group client processes under one single process: the server. This helps with resource management.

Notes

  • Nightly Rust is required.

  • Due to technical requirements, currently only Linux is supported. Because:

    • Linux supports abstract sockets.
    • Linux supports sending credentials between processes, via Unix domain socket. Some BSD systems also support this feature, but implementation details differ -- and currently this project only supports Linux's implementation.

    For details, see unix(7).

Dependencies

~155KB