Есть срез строк, из пути к файлам различного разрешения (.doc, pdf, .dwg, .step и т.д.)
Их необходимо запускать в очерёдности в которой они записаны в срез, только после того как будет завершен предыдущий процесс. Собственно возникает вопрос - как корректно отслеживать завершение процессов различных программ и есть ли более функциональные способы отслеживания работы стороннего процесса?
На данный момент отслеживаю с помощью
cmd.Wait :
func start(r []string) {
start := false
for i := range r {
cmd := exec.Command("cmd", "/C "+r[i])
cmd.Start()
err := cmd.Wait()
for !start {
var waitStatus syscall.WaitStatus
if err != nil {
os.Stderr.WriteString(fmt.Sprintf("Error: %s\n", err.Error()))
}
if exitError, ok := err.(*exec.ExitError); ok {
waitStatus = exitError.Sys().(syscall.WaitStatus)
fmt.Printf("Output: %s\n", []byte(fmt.Sprintf("%d", waitStatus.ExitStatus())))
}
} else {
waitStatus = cmd.ProcessState.Sys().(syscall.WaitStatus)
fmt.Printf("Output: %s\n", []byte(fmt.Sprintf("%d", waitStatus.ExitStatus())))
start = true
}
}
}