portlist: set SysProcAttr.HideWindow on Windows

Prevents annoying shell window flashes when running /server by hand.
This commit is contained in:
Brad Fitzpatrick
2020-06-08 09:04:31 -07:00
parent 07ca0c1c29
commit 2ca2389c5f
2 changed files with 20 additions and 1 deletions

View File

@ -13,12 +13,22 @@ import (
exec "tailscale.com/tempfork/osexec"
)
var osHideWindow func(*exec.Cmd) // non-nil on Windows; see portlist_windows.go
// hideWindow returns c. On Windows it first sets SysProcAttr.HideWindow.
func hideWindow(c *exec.Cmd) *exec.Cmd {
if osHideWindow != nil {
osHideWindow(c)
}
return c
}
func listPortsNetstat(arg string) (List, error) {
exe, err := exec.LookPath("netstat")
if err != nil {
return nil, fmt.Errorf("netstat: lookup: %v", err)
}
output, err := exec.Command(exe, arg).Output()
output, err := hideWindow(exec.Command(exe, arg)).Output()
if err != nil {
xe, ok := err.(*exec.ExitError)
stderr := ""