12345678910111213141516171819202122232425262728293031323334353637383940 |
- //go:build darwin || linux
- package libbox
- import (
- "os"
- "runtime"
- "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
- }
- if runtime.GOOS != "android" {
- if sUserID > 0 {
- err = outputFile.Chown(sUserID, sGroupID)
- if err != nil {
- outputFile.Close()
- os.Remove(outputFile.Name())
- 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
- }
|