가변 인수를 사용하여 시스템 명령 실행
여러 인수가 포함된 시스템 명령을 실행할 때는 명령과 인수를 구분해야 합니다. 아래 코드는 이 개념을 보여줍니다.
import ( "fmt" "os/exec" "strings" "sync" ) func exeCmd(cmd string, wg *sync.WaitGroup) { fmt.Println("command is ", cmd) // Splitting head (e.g., "g++") from the rest of the command (e.g., "-c file.cpp") parts := strings.Fields(cmd) head := parts[0] parts = parts[1:len(parts)] out, err := exec.Command(head, parts...).Output() if err != nil { fmt.Printf("%s", err) } fmt.Printf("%s", out) wg.Done() // Signal to waitgroup that this goroutine is done } func main() { wg := new(sync.WaitGroup) wg.Add(3) x := []string{ "echo newline >> foo.o", "echo newline >> f1.o", "echo newline >> f2.o"} go exeCmd(x[0], wg) go exeCmd(x[1], wg) go exeCmd(x[2], wg) wg.Wait() }
이 코드에서:
이 접근 방식을 사용하면 프로그램은 임의 개수의 시스템 명령을 실행할 수 있습니다. 인수. 여러 단어로 구성된 명령에 실패했던 원본 코드의 한계를 극복했습니다.
위 내용은 Go에서 가변 인수를 사용하여 시스템 명령을 안전하게 실행하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!