本文整理汇总了Golang中github.com/shirou/gopsutil/process.Process.Children方法的典型用法代码示例。如果您正苦于以下问题:Golang Process.Children方法的具体用法?Golang Process.Children怎么用?Golang Process.Children使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/shirou/gopsutil/process.Process
的用法示例。
在下文中一共展示了Process.Children方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: hasPort
func hasPort(proc *process.Process, connections []net.ConnectionStat) bool {
for _, connection := range connections {
if connection.Status == "LISTEN" && connection.Pid == int32(proc.Pid) {
return true
}
}
children, err := proc.Children()
if err == nil {
for _, child := range children {
if hasPort(child, connections) {
return true
}
}
}
return false
}
示例2: doGetPorts
func (sc *ServiceConfig) doGetPorts(proc *process.Process) ([]string, error) {
var err error
if len(connectionsCache) == 0 {
connectionsCache, err = net.Connections("all")
if err != nil {
return nil, errors.WithStack(err)
}
}
var ports []string
var knownPorts = make(map[int]struct{})
if sc.LaunchChecks != nil {
for _, port := range sc.LaunchChecks.Ports {
knownPorts[port] = struct{}{}
}
}
for _, connection := range connectionsCache {
if connection.Status == "LISTEN" {
if _, ok := knownPorts[int(connection.Laddr.Port)]; connection.Pid == proc.Pid && !ok {
ports = append(ports, strconv.Itoa(int(connection.Laddr.Port)))
}
}
}
children, err := proc.Children()
// This will error out if the process has finished or has no children
if err != nil {
return ports, nil
}
for _, child := range children {
childPorts, err := sc.doGetPorts(child)
if err == nil {
ports = append(ports, childPorts...)
}
}
return ports, nil
}