Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Golang切换cmd.Stdout安全吗_Go_Exec - Fatal编程技术网

Golang切换cmd.Stdout安全吗

Golang切换cmd.Stdout安全吗,go,exec,Go,Exec,我使用Go执行进程,并将输出写入文件(日志文件) 我希望每天轮换日志和更改日志文件 每天从任意goroutine更改cmd.Stdout变量安全吗?或者我必须实现将从Stdout复制到另一个文件并切换文件的goroutine?直接更改这些变量安全。但是,如果在命令实际运行后更改它们,则它们对实际运行的子进程没有影响。要将正在运行的进程的输出旋转为“live”,您必须在进程本身中实现它,或者通过父进程传递所有内容,并按照您的建议使用goroutine cmd := exec.Comman

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

我希望每天轮换日志和更改日志文件


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

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

    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
    }
    // 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