Hi, all.
I have some code:
...
func RunTimeout(c *exec.Cmd, cnl context.CancelFunc) error {
defer cnl()
if err := c.Start(); err != nil {
return err
}
return c.Wait()
}
func main() {
ctx, cnl := context.WithTimeout(context.Background(), 10*time.Second)
if err := RunTimeout(exec.CommandContext(ctx, "test.sh"), cnl); err !=
nil {
if err == context.DeadlineExceeded {
println("timed out")
} else {
println(err.Error())
}
}
}
Script *test.sh* looks like:
#!/bin/bash
sleep 60s
If exec.CommandContext timed out it would kill process. But in my case
there are two process: parent bash process *test.sh* and its child process
with *sleep 60s*. In this case only bash process *test.sh* will be killed
after 10 seconds.
Is this normal behavior? It seems strange.
--
Best regards, Yuri
--
You received this message because you are subscribed to the Google Groups
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.