golanggohlsrtmpwebrtcmedia-serverobs-studiortcprtmp-proxyrtmp-serverrtprtsprtsp-proxyrtsp-relayrtsp-serversrtstreamingwebrtc-proxy
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
595 B
42 lines
595 B
// +build !windows |
|
|
|
package externalcmd |
|
|
|
import ( |
|
"os" |
|
"os/exec" |
|
"syscall" |
|
) |
|
|
|
func (e *Cmd) runInner() bool { |
|
cmd := exec.Command("/bin/sh", "-c", "exec "+e.cmdstr) |
|
|
|
cmd.Env = append(os.Environ(), |
|
"RTSP_PATH="+e.env.Path, |
|
"RTSP_PORT="+e.env.Port, |
|
) |
|
|
|
cmd.Stdout = os.Stdout |
|
cmd.Stderr = os.Stderr |
|
|
|
err := cmd.Start() |
|
if err != nil { |
|
return true |
|
} |
|
|
|
cmdDone := make(chan struct{}) |
|
go func() { |
|
defer close(cmdDone) |
|
cmd.Wait() |
|
}() |
|
|
|
select { |
|
case <-e.terminate: |
|
syscall.Kill(cmd.Process.Pid, syscall.SIGQUIT) |
|
<-cmdDone |
|
return false |
|
|
|
case <-cmdDone: |
|
return true |
|
} |
|
}
|
|
|