繁華開滿天機(jī)
2021-05-05 17:08:22
以下(正確地)不起作用:package mainimport ( "os" "time")func main() { os.Args[0] = "custom name" println("sleeping") time.Sleep(1000 * time.Second) println("done")}某些語言提供了將進(jìn)程名稱設(shè)置為內(nèi)置功能(例如,在Ruby中僅是分配給的問題 $0)或作為第三方庫(Python)的功能。我正在尋找一種至少可以在Linux上運(yùn)行的解決方案。
3 回答

尚方寶劍之說
TA貢獻(xiàn)1788條經(jīng)驗 獲得超4個贊
要在Linux上更改進(jìn)程名稱,您需要將prctl系統(tǒng)調(diào)用與該PR_SET_NAME
選項結(jié)合使用。
目前,我認(rèn)為您無法在Go代碼中做到這一點。但是,您可以構(gòu)建一個小的C模塊來執(zhí)行此操作,然后將其集成到Go構(gòu)建中。

一只萌萌小番薯
TA貢獻(xiàn)1795條經(jīng)驗 獲得超7個贊
我認(rèn)為“流程標(biāo)題”不是一個明確定義的術(shù)語。無論如何,Ruby與Go有什么關(guān)系?os.Args的文檔沒有提及任何“流程標(biāo)題”,也沒有說明分配給切片項時會發(fā)生任何魔術(shù)。后者實際上是Go的常規(guī)屬性。沒有用于結(jié)構(gòu)域,數(shù)組/切片項的變量的靈巧的獲取器/設(shè)置器,因此簡單的賦值只是分配并且不執(zhí)行任何操作,也不能執(zhí)行任何其他操作。
簡而言之,缺乏魔術(shù)是預(yù)期的正確行為。
為了通過“ os”軟件包來處理除可移植屬性之外的其他過程屬性,必須以特定于平臺的方式使用“ syscall”軟件包。但是,構(gòu)建約束(在此討論)可以幫助正確處理跨平臺的內(nèi)容。
- 3 回答
- 0 關(guān)注
- 539 瀏覽
添加回答
舉報
0/150
提交
取消