Categorygithub.com/damonchen/cmdx
repositorypackage
0.1.5
Repository: https://github.com/damonchen/cmdx.git
Documentation: pkg.go.dev

# Packages

No description provided by the author

# README

cmdx

cmdx is extend golang exec.Cmd

example

package main

import (
	"fmt"
	"github.com/damonchen/cmdx"
	"time"
)

func main() {
	c := "./test.sh"
	cmd, readerCloser := cmdx.NewCombinedPipeCmd(c, cmdx.WithArgs("-alh"), cmdx.WithTimeout(10))
	defer readerCloser.Close()

	t := time.Now()
	go func() {
		var buff [20]byte

		tick := cmd.Tick()
		for {
			select {
			case <-time.After(time.Second * 5):
				fmt.Println("cancel")
				cmd.Cancel()
				return
			case <-cmd.Done():
				fmt.Println("timeout", time.Since(t))
				return
			case <-tick:
				_, err := readerCloser.Read(buff[:])
				if err != nil {
					fmt.Println("read error", err, time.Since(t))
					return
				}
				fmt.Println(string(buff[:]))
			}
		}
	}()

	err := cmd.Run()
	if err != nil {
		fmt.Println(err, time.Since(t))
	}
	fmt.Println("since", time.Since(t), cmd.Status())
	time.Sleep(time.Second)
	return
}