Rust 如何替换std::env:args()中的条目?
我想为我的Rust程序中的线程提供单独的名称。这些名称应该出现在Rust 如何替换std::env:args()中的条目?,rust,command-line-arguments,std,Rust,Command Line Arguments,Std,我想为我的Rust程序中的线程提供单独的名称。这些名称应该出现在top/htop中,这样我就可以区分线程的作业。在Ruby中,我会修改argv[0]条目,或者可能修改Process.setproctitle(“foo”)。我的灵感来自Ruby的 env::args函数返回一个args值。Args值包装了特定于平台的std::sys::Args::Args()函数,该函数不会重新导出以供一般使用。没有可用的突变子(所以是的,stdlib明确表示它是不可变的) 我如何以其他方式改变论点?我很高兴有一
top
/htop
中,这样我就可以区分线程的作业。在Ruby中,我会修改argv[0]
条目,或者可能修改Process.setproctitle(“foo”)
。我的灵感来自Ruby的
env::args
函数返回一个args
值。Args
值包装了特定于平台的std::sys::Args::Args()
函数,该函数不会重新导出以供一般使用。没有可用的突变子(所以是的,stdlib明确表示它是不可变的)
我如何以其他方式改变论点?我很高兴有一个Linux专用的解决方案,因为这是真正的工作将发生的地方。stdlib之外的解决方案也不错
我应该采取什么路径来修改流程环境中的第一个参数
如何替换std::env:args()中的条目
你不能。不可变的意思是不可变的
我想更改我的Rust程序在top
/htop
标准库中没有类似的内容。据我所知,目前还没有跨平台的解决方案,因此要投入其中将是一场艰苦的战斗
Linux
似乎有一个足够简单的解决方案:
如果您只关心Linux,您可以使用板条箱:
马科斯
具有各种“流程名称”的概念,解决方案比较复杂,并且使用未记录/隐藏的API:
答案中的所有内容都可以使用macOS API的适当绑定以Rust编写
窗户
似乎没有这样的概念:
跨平台
有人可以写一个板条箱来抽象这些不同的机制,但我不知道
所以我可以很容易地发现我所有的线程都在做什么
如注释中所述,当您创建线程时,您可以。最近投入了一些工作,但这项工作停滞不前。我编写了以跨平台方式设置流程标题的方法。在Linux上,它确实碰巧命名了当前线程,但这是它提供的API的一个怪癖,而不是故意选择的。我的Rust程序是如何出现的。。。我所有的线程都在做什么-它是哪一个?您关心整个程序还是特定的线程?在Ruby中,我会修改argv[0]
条目-您的意思是argv
?我不知道这会改变过程之外的任何事情。搜索此功能似乎很困难,您是否有任何链接,以便我可以了解更多有关Ruby功能的信息?(刚刚意识到我的链接是错误的),线程不是进程,为什么不在构建线程时使用名称?对答案的赞誉
prctl::set_name("new_process")