2个版本
0.1.1 | 2019年4月28日 |
---|---|
0.1.0 | 2019年4月27日 |
#346 in 操作系统
14,765 每月下载量
在 2 crates 中使用
9KB
122 行
proctitle
跨平台进程标题。
proctitle
尝试在其支持的平台上暴露最接近安全的 BSD setproctitle()
函数。
如果您希望将某些内部状态暴露给 top
或 ps
,或者帮助管理员区分您的程序的多实例,这可能很有用。
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 上,您可以监视 top
或 ps
,并看到进程名称在工作时更改。
-% 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