Crate r50[][src]

R50

Project

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

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).

Modules

version_info

0.14.1 (March 21st, 2021)

Constants

CODE_NAME

Crate code name

DEBUG_SERVER_ADDRESS

Debug server address

ID

ID of this crate

NAME

Crate name

RELEASE_DATE

Crate release date (year/month/day)

SERVER_ADDRESS

Server address

TAG

Tag, which can be used for logging…

VERSION

Crate version

Functions

project

Makes new project

Type Definitions

Result

Result type used in this crate