كيفية الحصول على معلومات حول العملية بواسطة PID في Go
مرحباً بالجميع! أنا أكتب أداة مراقبة صغيرة بلغة Go لتتبع العمليات الجارية في Linux. أحتاج إلى الحصول على معلومات أساسية عن العملية باستخدام PID (معرف العملية): اسم العملية، الحالة (قيد التشغيل/نائم/زومبي)، استخدام الذاكرة، وقت التشغيل، ومسار الملف التنفيذي.
بدأت بطريقة بسيطة: قراءة `/proc/[PID]/status` و `/proc/[PID]/cmdline`. لكن هذا يبدو غير أنيق — حيث يتطلب تحليل ملفات نصية، وللحصول على المسار الكامل للثنائي أحتاج أيضاً إلى قراءة الرابط الرمزي `/proc/[PID]/exe`. علاوة على ذلك، لست متأكداً من أن هذا الحل متعدد المنصات — ففي Windows و macOS لا يوجد `/proc`.
حالياً، يبدو الكود الخاص بي كالتالي:
```go
package main
import (
"fmt"
"io/ioutil"
"os"
"strconv"
)
func getProcessName(pid int) (string, error) {
data, err := ioutil.ReadFile(fmt.Sprintf("/proc/%d/comm", pid))
if err != nil {
return "", err
}
return string(data), nil
}
func main() {
name, _ := getProcessName(1)
fmt.Println(name)
}
```
السؤال: