こんにちは、kurumi-bioです。
第4回目のexecパッケージ(標準ライブラリー)の学習です。
環境
- Windows
OSバージョン:Windows11 Home 22H2
Go言語のバージョン:go version go1.20.3 windows/amd64 - Linux
OSバージョン:openSUSE Leap 15.4
Go言語のバージョン:go version go1.20.1 linux/amd64
[time package] Sleep関数
func Sleep(d Duration)
◆テストコード
package main import ( "fmt" "os" "strconv" "time" ) func main() { if len(os.Args) != 2 { fmt.Fprintf(os.Stderr, "usage: sleep ms") os.Exit(1) } i, _ := strconv.Atoi(os.Args[1]) t := time.Duration(i) time.Sleep(t * time.Second) fmt.Fprintf(os.Stderr, "Success") }
◆実行結果(Windows)
Run関数
func (c *Cmd) Run() error
◆テストコード
package main import ( "fmt" "os" "os/exec" "time" ) func main() { c := exec.Command("./Sleep.exe", "3") c.Stderr = os.Stderr n := time.Now() fmt.Println("Start") e := c.Run() fmt.Printf("End:[%1.1f 秒経過]\n", time.Since(n).Seconds()) if e != nil { fmt.Fprint(os.Stderr, "error=[%v]\n", e) fmt.Println(e) } }
◆実行結果(Windows)
◆テストコード
package main import ( "fmt" "os" "os/exec" ) func main() { c := exec.Command("./sleep.exe") c.Stderr = os.Stderr e := c.Run() if e != nil { var ee *exec.ExitError var flag bool ee, flag = e.(*exec.ExitError) if flag { fmt.Println("") fmt.Printf("ExitCode=[%d]\n", ee.ProcessState.ExitCode()) fmt.Printf("Pid=[%d]\n", ee.ProcessState.Pid()) fmt.Printf("Stderr=[%s]\n", string(ee.Stderr)) } fmt.Fprintf(os.Stderr, "Error=[%v]\n", e) } }
◆実行結果(Windows)
◆テストコード
package main import ( "fmt" "os" "os/exec" ) func main() { c := exec.Command("./sleep2.exe") c.Stderr = os.Stderr e := c.Run() if e != nil { var ee *exec.ExitError var flag bool ee, flag = e.(*exec.ExitError) if flag { fmt.Println("") fmt.Printf("ExitCode=[%d]\n", ee.ProcessState.ExitCode()) fmt.Printf("Pid=[%d]\n", ee.ProcessState.Pid()) fmt.Printf("Stderr=[%s]\n", string(ee.Stderr)) } fmt.Fprintf(os.Stderr, "Error=[%v]\n", e) } }
◆実行結果(Windows)
最後までご覧いただきありがとうございます