implement freebsd libproc query, BUT it's reading wrong values

This commit is contained in:
mykola2312 2024-11-25 15:18:49 +02:00
parent c908ee8b6e
commit edff33b0b3
2 changed files with 41 additions and 4 deletions

37
proc_freebsd.go Normal file
View file

@ -0,0 +1,37 @@
//go:build freebsd
package proc
/*
#cgo LDFLAGS: -lproc
#include <libproc.h>
static int libproc_state(int pid) {
int ret;
struct proc_handle* proc;
ret = proc_attach((pid_t)pid, PATTACH_RDONLY | PATTACH_NOSTOP, &proc);
if (ret) return -ret;
ret = proc_state(proc);
proc_detach(proc, 0);
proc_free(proc);
return ret;
}
*/
import "C"
import (
"errors"
"fmt"
)
func queryInternal(pid int) (ProcState, error) {
var ret C.int
ret = C.libproc_state((C.int)(pid))
if ret < 0 {
return 0, errors.New(fmt.Sprintf("libproc: %d", (int)(-ret)))
}
return (ProcState)(ret), nil
}

View file

@ -1,11 +1,11 @@
//go:build linux
package proc
import "testing"
import (
"testing"
)
func TestQuery(t *testing.T) {
if _, err := Query(1); err != nil {
t.Failed()
t.Fail()
}
}