in quark.go [296:356]
func processToGo(cProcess *C.struct_quark_process) Process {
var process Process
if cProcess == nil {
return Process{}
}
process.Pid = uint32(cProcess.pid)
if cProcess.flags&C.QUARK_F_PROC != 0 {
process.Proc = Proc{
CapInheritable: uint64(cProcess.proc_cap_inheritable),
CapPermitted: uint64(cProcess.proc_cap_permitted),
CapEffective: uint64(cProcess.proc_cap_effective),
CapBset: uint64(cProcess.proc_cap_bset),
CapAmbient: uint64(cProcess.proc_cap_ambient),
TimeBoot: uint64(cProcess.proc_time_boot),
Ppid: uint32(cProcess.proc_ppid),
Uid: uint32(cProcess.proc_uid),
Gid: uint32(cProcess.proc_gid),
Suid: uint32(cProcess.proc_suid),
Sgid: uint32(cProcess.proc_sgid),
Euid: uint32(cProcess.proc_euid),
Egid: uint32(cProcess.proc_egid),
Pgid: uint32(cProcess.proc_pgid),
Sid: uint32(cProcess.proc_sid),
EntryLeader: uint32(cProcess.proc_entry_leader),
EntryLeaderType: uint32(cProcess.proc_entry_leader_type),
TtyMajor: uint32(cProcess.proc_tty_major),
TtyMinor: uint32(cProcess.proc_tty_minor),
UtsInonum: uint32(cProcess.proc_uts_inonum),
IpcInonum: uint32(cProcess.proc_ipc_inonum),
MntInonum: uint32(cProcess.proc_mnt_inonum),
NetInonum: uint32(cProcess.proc_net_inonum),
Valid: true,
}
}
if cProcess.flags&C.QUARK_F_EXIT != 0 {
process.Exit = Exit{
ExitCode: int32(cProcess.exit_code),
ExitTimeProcess: uint64(cProcess.exit_time_event),
Valid: true,
}
}
if cProcess.flags&C.QUARK_F_COMM != 0 {
process.Comm = C.GoString(&cProcess.comm[0])
}
if cProcess.flags&C.QUARK_F_FILENAME != 0 {
process.Filename = C.GoString(&cProcess.filename[0])
}
if cProcess.flags&C.QUARK_F_CMDLINE != 0 {
b := C.GoBytes(unsafe.Pointer(&cProcess.cmdline[0]), C.int(cProcess.cmdline_len))
nul := string(byte(0))
b = bytes.TrimRight(b, nul)
process.Cmdline = strings.Split(string(b), nul)
}
if cProcess.flags&C.QUARK_F_CWD != 0 {
process.Cwd = C.GoString(&cProcess.cwd[0])
}
return process
}