// Copyright 2017 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. // +build linux package main import ( "bytes" "fmt" "io/ioutil" "os" "syscall" ) func gettid() int { return syscall.Gettid() } func tidExists(tid int) (exists, supported bool) { stat, err := ioutil.ReadFile(fmt.Sprintf("/proc/self/task/%d/stat", tid)) if os.IsNotExist(err) { return false, true } // Check if it's a zombie thread. state := bytes.Fields(stat)[2] return !(len(state) == 1 && state[0] == 'Z'), true }