Go
निष्पादित कमांड
खोज…
इंटरप्ट के साथ टाइमिंग आउट और फिर किल
c := exec.Command(name, arg...)
b := &bytes.Buffer{}
c.Stdout = b
c.Stdin = stdin
if err := c.Start(); err != nil {
return nil, err
}
timedOut := false
intTimer := time.AfterFunc(timeout, func() {
log.Printf("Process taking too long. Interrupting: %s %s", name, strings.Join(arg, " "))
c.Process.Signal(os.Interrupt)
timedOut = true
})
killTimer := time.AfterFunc(timeout*2, func() {
log.Printf("Process taking too long. Killing: %s %s", name, strings.Join(arg, " "))
c.Process.Signal(os.Kill)
timedOut = true
})
err := c.Wait()
intTimer.Stop()
killTimer.Stop()
if timedOut {
log.Print("the process timed out\n")
}
सरल कमांड निष्पादन
// Execute a command a capture standard out. exec.Command creates the command
// and then the chained Output method gets standard out. Use CombinedOutput()
// if you want both standard out and standerr output
out, err := exec.Command("echo", "foo").Output()
if err != nil {
log.Fatal(err)
}
एक कमांड निष्पादित करना तब जारी रखें और प्रतीक्षा करें
cmd := exec.Command("sleep", "5")
// Does not wait for command to complete before returning
err := cmd.Start()
if err != nil {
log.Fatal(err)
}
// Wait for cmd to Return
err = cmd.Wait()
log.Printf("Command finished with error: %v", err)
दो बार कमांड चलाना
Cmd को उसके रन, आउटपुट या CombinedOutput विधियों को कॉल करने के बाद पुन: उपयोग नहीं किया जा सकता है
दो बार कमांड चलाने से काम नहीं चलेगा :
cmd := exec.Command("xte", "key XF86AudioPlay")
_ := cmd.Run() // Play audio key press
// .. do something else
err := cmd.Run() // Pause audio key press, fails
त्रुटि: निष्पादन: पहले से ही शुरू हो गया
बल्कि, दो अलग exec.Command
उपयोग करना चाहिए। आपको कमांड के बीच कुछ देरी की भी आवश्यकता हो सकती है।
cmd := exec.Command("xte", "key XF86AudioPlay")
_ := cmd.Run() // Play audio key press
// .. wait a moment
cmd := exec.Command("xte", "key XF86AudioPlay")
_ := cmd.Run() // Pause audio key press
Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow