Skip to content

A safe cross-platform interface to setting process titles

License

Notifications You must be signed in to change notification settings

Freaky/rust-proctitle

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

proctitle

Cargo Build Status

Cross-platform process titles.

proctitle attempts to expose the closest safe approximation of the BSD setproctitle() function on the platforms it supports.

This can be useful if you wish to expose some internal state to top or ps, or to help an administrator distinguish between multiple instances of your program.

use proctitle::set_title;
let tasks = ["frobrinate", "defroogle", "hodor", "bork"];

for task in &tasks {
    set_title(format!("example: {}", task));
    perform_task(task);
}

set_title("example: idle");

On Linux or a BSD you could then watch top or ps and see the process name change as it works:

-% cmd &
[1] 8515
-% ps $!
 PID TT  STAT     TIME COMMAND
8515  4  S+    0:00.06 example: defroggle (cmd)

Supported Platforms

BSD

On BSDs, setproctitle() is used, and should pretty much Just Work. Tested on FreeBSD 12, DragonFlyBSD 5.4, OpenBSD 6.5, and NetBSD 8.0.

Linux

proctitle uses prctl(PR_SET_NAME) to name the current thread, with a truncation limit of 15 bytes. It may be wise to limit set_title() calls to the main thread.

More BSD-ish process-global changes are possible by modifying the process environment, but this is not yet supported because it's wildly unsafe.

Windows

SetConsoleTitleW() is used to set a title for the console, if any.

In case there is no console (for example, a system service), a dummy named event handle is also created. This can be found via tools such as Process Explorer (View ⮕ Lower Pane View ⮕ Handles) and Process Hacker (Properties ⮕ Handles).

Everything Else

Unsupported platforms merely receive a stub function that does nothing.

About

A safe cross-platform interface to setting process titles

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages