35 lines
598 B
Go
35 lines
598 B
Go
package ulogd
|
|
|
|
import (
|
|
"io"
|
|
"os"
|
|
"os/exec"
|
|
"syscall"
|
|
|
|
"github.com/weaveworks/weave/common"
|
|
)
|
|
|
|
func waitForExit(cmd *exec.Cmd) {
|
|
if err := cmd.Wait(); err != nil {
|
|
common.Log.Fatalf("ulogd terminated: %v", err)
|
|
}
|
|
common.Log.Fatal("ulogd terminated normally")
|
|
}
|
|
|
|
func Start() error {
|
|
cmd := exec.Command("/usr/sbin/ulogd", "-v")
|
|
cmd.SysProcAttr = &syscall.SysProcAttr{
|
|
Pdeathsig: syscall.SIGKILL,
|
|
}
|
|
stdout, err := cmd.StderrPipe()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if err := cmd.Start(); err != nil {
|
|
return err
|
|
}
|
|
go io.Copy(os.Stdout, stdout)
|
|
go waitForExit(cmd)
|
|
return nil
|
|
}
|