以下(正确地)不起作用:package mainimport ( "os" "time")func main() { os.Args[0] = "custom name" println("sleeping") time.Sleep(1000 * time.Second) println("done")}某些语言提供了将进程名称设置为内置功能(例如,在Ruby中仅是分配给的问题 $0)或作为第三方库(Python)的功能。我正在寻找一种至少可以在Linux上运行的解决方案。
3 回答
尚方宝剑之说
TA贡献1788条经验 获得超4个赞
要在Linux上更改进程名称,您需要将prctl系统调用与该PR_SET_NAME
选项结合使用。
目前,我认为您无法在Go代码中做到这一点。但是,您可以构建一个小的C模块来执行此操作,然后将其集成到Go构建中。
一只萌萌小番薯
TA贡献1795条经验 获得超7个赞
我认为“流程标题”不是一个明确定义的术语。无论如何,Ruby与Go有什么关系?os.Args的文档没有提及任何“流程标题”,也没有说明分配给切片项时会发生任何魔术。后者实际上是Go的常规属性。没有用于结构域,数组/切片项的变量的灵巧的获取器/设置器,因此简单的赋值只是分配并且不执行任何操作,也不能执行任何其他操作。
简而言之,缺乏魔术是预期的正确行为。
为了通过“ os”软件包来处理除可移植属性之外的其他过程属性,必须以特定于平台的方式使用“ syscall”软件包。但是,构建约束(在此讨论)可以帮助正确处理跨平台的内容。
- 3 回答
- 0 关注
- 503 浏览
添加回答
举报
0/150
提交
取消