美文网首页
显示所有子线程

显示所有子线程

作者: 帆子_8c3a | 来源:发表于2021-12-21 01:04 被阅读0次
    package main
    
    import (
        "fmt"
        "io/ioutil"
        "os"
        "strconv"
        "syscall"
    )
    
    func ShowProcessInfo(pid int) {
        err := syscall.PtraceAttach(pid)
        if err != nil {
            panic(err)
        }
    
        _, err = syscall.Wait4(pid, nil, 0, nil)
        if err != nil {
            panic(err)
        }
    
        var regs syscall.PtraceRegs
        err = syscall.PtraceGetRegs(pid, &regs)
        if err != nil {
            panic(err)
        }
    
        err = syscall.PtraceDetach(pid)
        if err != nil {
            panic(err)
        }
        fmt.Println("pid:", pid)
        fmt.Println(regs.Rsp)
    }
    
    func ShowProcessStack(pid string) {
        dirs, err := ioutil.ReadDir(fmt.Sprintf("/proc/%s/task", pid))
        if err != nil {
            panic(err)
        }
        for _, dir := range dirs {
            sub_pid, _ := strconv.ParseInt(dir.Name(), 10, 32)
            ShowProcessInfo(int(sub_pid))
        }
    }
    func main() {
        ShowProcessStack(os.Args[1])
    }
    
    

    相关文章

      网友评论

          本文标题:显示所有子线程

          本文链接:https://www.haomeiwen.com/subject/lhptqrtx.html