第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

在 Golang 中計(jì)算 linux 上的進(jìn)程

在 Golang 中計(jì)算 linux 上的進(jìn)程

Go
慕慕森 2021-12-07 09:30:00
我正在開(kāi)發(fā)一個(gè)插件,它可以計(jì)算在 Linux 系統(tǒng)上運(yùn)行的進(jìn)程。我四處搜索,似乎我需要訪問(wèn) /proc 并從那里收集信息。我還嘗試使用 os、os/exec 和 syscall 包來(lái)運(yùn)行外部命令,ps -A --no-headers | wc -l但這也不起作用。我也在用 golang 編寫(xiě)代碼。歡迎任何幫助或建議。
查看完整描述

2 回答

?
www說(shuō)

TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超8個(gè)贊

您可以在ps此處找到 Linux用于遍歷進(jìn)程列表的代碼:

https://gitlab.com/procps-ng/procps/blob/master/proc/readproc.c#L1167

簡(jiǎn)而言之,算法是:

  1. opendir 在 /proc

  2. 調(diào)用readdir直到返回第一個(gè)字符是數(shù)字的條目。

因此,要計(jì)算進(jìn)程數(shù),您可以通讀整個(gè)目錄并計(jì)算匹配的條目數(shù)。

您可以在 Go 中使用os.Opento open執(zhí)行此操作/proc,然后調(diào)用該Readdirnames方法列出進(jìn)程。


查看完整回答
反對(duì) 回復(fù) 2021-12-07
?
jeck貓

TA貢獻(xiàn)1909條經(jīng)驗(yàn) 獲得超7個(gè)贊

以下程序?qū)ξ矣杏茫?/p>


package main


import (

    "fmt"

    "log"

    "os/exec"

)


func main() {

    out, err := exec.Command("/bin/sh", "-c", "ps -A --no-headers | wc -l").Output()

    if err != nil {

        log.Fatal(err)

    }

    fmt.Printf("Number of running processes: %s\n", out)

}

請(qǐng)注意,您必須使用/bin/sh -c. exec.Command執(zhí)行單個(gè)程序(可執(zhí)行文件),例如/bin/sh或ps或tail。


當(dāng)您ps -A --no-headers | wc -l在命令提示符中鍵入此表達(dá)式時(shí),該表達(dá)式由 shell 程序(例如/bin/sh)解釋,并且 shell 程序啟動(dòng)兩個(gè)程序(ps和wc)并將|第一個(gè)程序的輸出()管道()到第二個(gè)程序的輸入。


/bin/sh -c command相當(dāng)于command在終端中鍵入(有一些細(xì)微差別,請(qǐng)閱讀man sh以了解更多詳細(xì)信息)。


查看完整回答
反對(duì) 回復(fù) 2021-12-07
  • 2 回答
  • 0 關(guān)注
  • 201 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)