Skip to content

Commit

Permalink
Merge pull request #13 from PouuleT/dev/fixGoRoutine
Browse files Browse the repository at this point in the history
Fix go routine problem with netns
  • Loading branch information
PouuleT authored Oct 13, 2016
2 parents d541db7 + 3eb5418 commit dfc200b
Showing 1 changed file with 16 additions and 17 deletions.
33 changes: 16 additions & 17 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -226,28 +226,27 @@ func main() {
signal.Notify(c, syscall.SIGINT)
signal.Notify(c, syscall.SIGTERM)

// Launch the command in a go routine
// Wait for the process to end
go func() {
err = execCmd(command)
if err != nil {
log.Warn("Error while running command : ", err)
for {
select {
// If we recieve a signal, we let it flow to the process
case signal := <-c:
log.Debugf("Got a %s", signal.String())
// If the process is done, we exit properly
case <-done:
log.Debugf("Process exited properly, exiting")
return
}
}
done <- struct{}{}
}()

// Wait for the process to end
FOR_LOOP:
for {
select {
// If we recieve a signal, we let it flow to the process
case signal := <-c:
log.Debugf("Got a %s", signal.String())
// If the process is done, we exit properly
case <-done:
log.Debugf("Process exited properly, exiting")
break FOR_LOOP
}
// Launch the command in a go routine
err = execCmd(command)
if err != nil {
log.Warn("Error while running command : ", err)
}
done <- struct{}{}

log.Debug("Go back to orignal namspace")

Expand Down

0 comments on commit dfc200b

Please sign in to comment.