Guest User

Untitled

a guest
May 27th, 2018
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.74 KB | None | 0 0
  1. func Launch(vbox *VBoxSpec, statusch chan<- *VmStatus, quitch <-chan bool) {
  2.  
  3. go func() {
  4. vboxPath := main.Config["VboxPath"]
  5. vboxHeadlessBin := fmt.Sprintf("%s/VBoxHeadless", vboxPath)
  6.  
  7. statusch <- VmStatus{vbox, VMSTATUS_LAUNCHING}
  8.  
  9. var stdoutFilePtr *File
  10.  
  11. pid, err := os.ForkExec(vboxHeadlessBin,
  12. []string{"-s", "winxp", "-v", "on", "-p", "12345"},
  13. []string{},
  14. []*File{stdoutFilePtr}
  15. vboxPath)
  16.  
  17. stdout := readerToChannel(*stdoutFilePtr)
  18. stdoutBuf := bytes.NewBuffer(make([]byte, 0, 256))
  19.  
  20. stdoutScanner := SOME_SCANNER(stdoutBuf)
  21.  
  22. select {
  23. case s := <-stdout:
  24. stdoutBuf.Write(s)
  25. if stdoutScanner.hasNextLine() {
  26. // etc.
  27. }
  28.  
  29. case <-quitch:
  30. // Send signal, wait and clean up
  31.  
  32. }
  33. }()
  34. }
Add Comment
Please, Sign In to add comment