platform: Add stderr redirect

This commit is contained in:
世界 2023-04-09 22:32:15 +08:00
parent 0d7aa19cd1
commit 8699412a4c
No known key found for this signature in database
GPG key ID: CD109927C34A63C4
2 changed files with 30 additions and 1 deletions

View file

@ -63,7 +63,7 @@ func (s *CommandServer) handleLogConn(conn net.Conn) error {
for { for {
select { select {
case <-ctx.Done(): case <-ctx.Done():
return ctx.Err() return nil
case message := <-subscription: case message := <-subscription:
err = writeLog(conn, []byte(message)) err = writeLog(conn, []byte(message))
if err != nil { if err != nil {

View file

@ -0,0 +1,29 @@
//go:build darwin || linux
package libbox
import (
"os"
"golang.org/x/sys/unix"
)
var stderrFile *os.File
func RedirectStderr(path string) error {
if stats, err := os.Stat(path); err == nil && stats.Size() > 0 {
_ = os.Rename(path, path+".old")
}
outputFile, err := os.Create(path)
if err != nil {
return err
}
err = unix.Dup2(int(outputFile.Fd()), int(os.Stderr.Fd()))
if err != nil {
outputFile.Close()
os.Remove(outputFile.Name())
return err
}
stderrFile = outputFile
return nil
}