gpt4 book ai didi

Golang切换cmd.Stdout是否安全

转载 作者:IT王子 更新时间:2023-10-29 01:14:40 26 4
gpt4 key购买 nike

我用 Go 执行流程并将输出写入文件(日志文件)

    cmd := exec.Command(path)
cmd.Dir = dir
t := time.Now()
t1 := t.Format("20060102-150405")

fs, err := os.Create(dir + "/var/log/" + t1 + ".std")
if err == nil {
cmd.Stdout = fs
}

我希望每天轮换日志并更改日志文件 http://golang.org/pkg/os/exec/

    // Stdout and Stderr specify the process's standard output and error.
//
// If either is nil, Run connects the corresponding file descriptor
// to the null device (os.DevNull).
//
// If Stdout and Stderr are the same writer, at most one
// goroutine at a time will call Write.
Stdout io.Writer
Stderr io.Writer

每天从任意 goroutine 更改 cmd.Stdout 变量是否安全,或者我必须实现将从 Stdout 复制到另一个文件并切换文件的 goroutine?

最佳答案

直接更改这些变量是安全的。但是,如果您在命令实际运行后更改它们,那么它们将不会影响实际运行的子进程。要“实时”旋转正在运行的进程的输出,您必须在进程本身中实现它,或者通过父级管道传输所有内容并按照您的建议使用 goroutine。

关于Golang切换cmd.Stdout是否安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22958996/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com