php editor Strawberry는 오늘 Golang의 /proc/meminfo에서 메모리를 추출하고 정보를 교환하는 매우 실용적인 방법을 소개할 것입니다. Golang 개발 과정에서 일부 성능 최적화나 리소스 관리 작업을 수행하기 위해 시스템 메모리를 확보하고 정보를 교환해야 하는 경우가 많습니다. /proc/meminfo는 시스템 메모리와 스왑 정보를 저장하는 파일입니다. 이 파일을 읽으면 필요한 정보를 얻을 수 있습니다. 다음으로 Golang을 사용하여 /proc/meminfo에서 메모리를 추출하고 정보를 교환하는 방법을 자세히 소개하겠습니다.
golang의 /proc/meminfo에서 memtotal, memfree, memavailable, swaptotal 및 swapfree 값을 추출하고 싶습니다. 지금까지 얻은 가장 가까운 방법은 fmt.sscanf()를 사용하여 한 번에 하나씩 원하는 값을 제공하지만 0이 있는 출력 라인도 많이 얻습니다. 제가 사용하고 있는 코드는 다음과 같습니다:
으아악이 결과는 다음과 같습니다.
으아악첫 번째 질문입니다. 결과를 내가 원하는 하나의 값(0이 아닌 값)으로 제한하는 방법이 있나요? 아니면 이 문제를 해결하는 더 좋은 방법이 있습니까?
내 /proc/meminfo 파일은 다음과 같습니다:
package main import ( "bufio" "fmt" "os" ) func main() { f, e := os.open("/proc/meminfo") if e != nil { panic(e) } defer f.close() s := bufio.newscanner(f) for s.scan() { var n int fmt.sscanf(s.text(), "memfree: %d kb", &n) fmt.println(n) } }
s.Scan()
逐行读取输入。如果某行与给 fmt.Sscanf
的格式字符串不匹配,则程序将输出 0 作为 var n int
은 루프 내에서 선언됩니다. 내 제안은 일치하는 항목 수인 fmt.Sscanf`에서 반환된 첫 번째 결과를 확인하는 것입니다. 따라서 첫 번째 결과가 1이면 일치 항목이 있고 해당 값이 출력될 수 있음을 의미합니다. 여기에서 실제 예제를 확인하세요: https://www.php.cn/link/25d0a45ccd9e33b6b1ef8760801b6841 p>
EDIT: 가능한 한 귀하의 코드에 가깝게 만들려고 노력했습니다. 사용되는 측정 단위는 man 페이지에 따라 다를 수 있으므로 다른 문제가 있을 수 있습니다. 그러나 시스템의 관련 값이 항상 "kB"로 출력된다면 사용 사례에 충분할 수 있습니다.
위 내용은 Golang의 /proc/meminfo에서 메모리 추출 및 스왑 정보의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!