mirror of
https://github.com/golang/sys.git
synced 2026-02-08 11:46:04 +03:00
These were apparently overlooked in CL 357329, CL 294490, CL 296889, and other various updates to this module. (I noticed them via gopls while investigating golang/go#49466.) Updates golang/go#41184 Change-Id: Id042bb6fe5282e6d528e9315acf2ad29d0df58ba Reviewed-on: https://go-review.googlesource.com/c/sys/+/362577 Trust: Bryan C. Mills <bcmills@google.com> Run-TryBot: Bryan C. Mills <bcmills@google.com> Reviewed-by: Ian Lance Taylor <iant@golang.org> Reviewed-by: Tobias Klauser <tobias.klauser@gmail.com> TryBot-Result: Go Bot <gobot@golang.org>
78 lines
1.7 KiB
Go
78 lines
1.7 KiB
Go
// Copyright 2012 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.
|
|
|
|
//go:build windows
|
|
// +build windows
|
|
|
|
// Example service program that beeps.
|
|
//
|
|
// The program demonstrates how to create Windows service and
|
|
// install / remove it on a computer. It also shows how to
|
|
// stop / start / pause / continue any service, and how to
|
|
// write to event log. It also shows how to use debug
|
|
// facilities available in debug package.
|
|
//
|
|
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
"strings"
|
|
|
|
"golang.org/x/sys/windows/svc"
|
|
)
|
|
|
|
func usage(errmsg string) {
|
|
fmt.Fprintf(os.Stderr,
|
|
"%s\n\n"+
|
|
"usage: %s <command>\n"+
|
|
" where <command> is one of\n"+
|
|
" install, remove, debug, start, stop, pause or continue.\n",
|
|
errmsg, os.Args[0])
|
|
os.Exit(2)
|
|
}
|
|
|
|
func main() {
|
|
const svcName = "myservice"
|
|
|
|
inService, err := svc.IsWindowsService()
|
|
if err != nil {
|
|
log.Fatalf("failed to determine if we are running in service: %v", err)
|
|
}
|
|
if inService {
|
|
runService(svcName, false)
|
|
return
|
|
}
|
|
|
|
if len(os.Args) < 2 {
|
|
usage("no command specified")
|
|
}
|
|
|
|
cmd := strings.ToLower(os.Args[1])
|
|
switch cmd {
|
|
case "debug":
|
|
runService(svcName, true)
|
|
return
|
|
case "install":
|
|
err = installService(svcName, "my service")
|
|
case "remove":
|
|
err = removeService(svcName)
|
|
case "start":
|
|
err = startService(svcName)
|
|
case "stop":
|
|
err = controlService(svcName, svc.Stop, svc.Stopped)
|
|
case "pause":
|
|
err = controlService(svcName, svc.Pause, svc.Paused)
|
|
case "continue":
|
|
err = controlService(svcName, svc.Continue, svc.Running)
|
|
default:
|
|
usage(fmt.Sprintf("invalid command %s", cmd))
|
|
}
|
|
if err != nil {
|
|
log.Fatalf("failed to %s %s: %v", cmd, svcName, err)
|
|
}
|
|
return
|
|
}
|