How can I replace an entry in std::env:args()?
我想为Rust程序中的线程提供单独的名称。 这些名称应出现在
如何以其他方式更改参数? 我对仅Linux的解决方案感到满意,因为这是真正的工作要做的地方。 stdlib之外的解决方案也可以。
为了在流程环境中修改第一个参数,应该采取什么路径?
How can I replace an entry in
std::env:args()
你不能。不可变意味着不可变。
I would like to change how my Rust program appears in
top /htop
标准库中没有类似的东西。据我所知,尚无跨平台解决方案,因此要在其中进行艰苦的努力。
的Linux
似乎有一个足够简单的解决方案:在Linux中更改进程名称而不更改argv [0]
如果只关心Linux,则可以使用prctl crate:
1 | prctl::set_name("new_process") |
苹果系统
具有"进程名称"的各种概念,解决方案很复杂,并且使用未记录/隐藏的API:在运行时在Mac OS X上设置进程名称
答案中的所有内容都可以使用对macOS API的适当绑定用Rust编写。
视窗
似乎没有这样的概念:在运行时更改进程名称
跨平台
有人可以写出一个条板箱来抽象这些不同的机制,但是我不知道有哪一种。
so I can easily spot what all my threads are doing
如注释中所述,创建线程时,可以为其命名。最近在运行时将一些工作放入了重命名线程中,但是该工作停滞了。
我写了proctitle板条箱,用于以跨平台方式设置进程标题。在Linux上,确实会为当前线程命名,但这是它提供的API的一个怪癖,而不是有意选择的。