process.go 466 B

1234567891011121314151617181920212223242526272829
  1. package util
  2. import (
  3. "context"
  4. "os/exec"
  5. )
  6. type Process struct {
  7. cmd *exec.Cmd
  8. cancel context.CancelFunc
  9. }
  10. func NewProcess(path string, params []string) *Process {
  11. ctx, cancel := context.WithCancel(context.Background())
  12. cmd := exec.CommandContext(ctx, path, params...)
  13. return &Process{
  14. cmd: cmd,
  15. cancel: cancel,
  16. }
  17. }
  18. func (p *Process) Start() error {
  19. return p.cmd.Start()
  20. }
  21. func (p *Process) Stop() error {
  22. p.cancel()
  23. return p.cmd.Wait()
  24. }