goタスクスケジューリング1(goのオペレーティングシステムコマンド呼び出し)
package main
import (
"fmt"
"os/exec"
)
func main() {
var (
cmd *exec.Cmd
err error
)
cmd = exec.Command("/bin/bash", "-c", "echo 1")
err = cmd.Run()
fmt.Println(err)
}
package main
import (
"fmt"
"os/exec"
)
func main() {
var (
cmd *exec.Cmd
output []byte
err error
)
// Cmd
cmd = exec.Command("/bin/bash", "-c", "ls -la /")
// , ( pipe )
if output, err = cmd.CombinedOutput(); err != nil {
fmt.Println(err)
return
}
//
fmt.Println(string(output))
}
goroutineはlinuxコマンドを実行し、2秒寝ました.mainは1秒でbashを殺し、出力はsignal:killed:
package main
import (
"context"
"fmt"
"os/exec"
"time"
)
type result struct {
err error
output []byte
}
func main() {
// cmd, , 2
//1 , cmd
var (
ctx context.Context
cancelFunc context.CancelFunc
cmd *exec.Cmd
resultChan chan *result
res *result
)
//
resultChan = make(chan *result, 1000)
//context channel, cancelFunc channel
//context. context.TODO()
ctx,cancelFunc = context.WithCancel(context.TODO())
go func() {
var (
output []byte
err error
)
//exec.Command()
cmd = exec.CommandContext(ctx,"/bin/bash", "-c", "sleep 2;echo hello;") // select{case