#process #title #setproctitle

proctitle

设置进程标题的安全接口

2个版本

0.1.1 2019年4月28日
0.1.0 2019年4月27日

#346 in 操作系统

Download history 3138/week @ 2023-12-08 1954/week @ 2023-12-15 835/week @ 2023-12-22 1076/week @ 2023-12-29 1960/week @ 2024-01-05 2469/week @ 2024-01-12 3909/week @ 2024-01-19 3108/week @ 2024-01-26 1501/week @ 2024-02-02 2921/week @ 2024-02-09 3782/week @ 2024-02-16 3081/week @ 2024-02-23 3171/week @ 2024-03-01 3799/week @ 2024-03-08 3605/week @ 2024-03-15 3678/week @ 2024-03-22

14,765 每月下载量
2 crates 中使用

MIT 许可证

9KB
122

proctitle

Cargo Build Status

跨平台进程标题。

proctitle 尝试在其支持的平台上暴露最接近安全的 BSD setproctitle() 函数。

如果您希望将某些内部状态暴露给 topps,或者帮助管理员区分您的程序的多实例,这可能很有用。

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");

在 Linux 或 BSD 上,您可以监视 topps,并看到进程名称在工作时更改。

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

支持的平台

BSD

在 BSDs 上,使用 setproctitle(),应该基本上可以正常运行。已在 FreeBSD 12、DragonFlyBSD 5.4、OpenBSD 6.5 和 NetBSD 8.0 上进行测试。

Linux

proctitle 使用 prctl(PR_SET_NAME) 来命名当前线程,长度限制为 15 个字节。可能明智的做法是将 set_title() 调用限制在主线程上。

通过修改进程环境可以实现更多类似 BSD 的进程全局更改,但这目前尚未支持,因为它非常不安全。

Windows

如果有的话,使用 SetConsoleTitleW() 为控制台设置标题。

如果没有控制台(例如,系统服务),则还会创建一个名为的虚拟事件句柄。这可以通过 Process Explorer(查看 ⮕ 下方面板视图 ⮕ 处理句柄)和 Process Hacker(属性 ⮕ 处理句柄)等工具找到。

其他所有平台

不支持的平台仅接收一个什么也不做的存根函数。

依赖项

~190KB