stdout.Read替代scanner

This commit is contained in:
BlackTeay 2024-05-06 17:26:45 +08:00
parent dc1dad08f4
commit 57e0df0062

31
main.go
View File

@ -1,7 +1,7 @@
/* /*
* @Author: BlackTeay * @Author: BlackTeay
* @Date: 2024-04-30 09:37:39 * @Date: 2024-04-30 09:37:39
* @LastEditTime: 2024-05-06 16:37:14 * @LastEditTime: 2024-05-06 17:24:31
* @LastEditors: BlackTeay * @LastEditors: BlackTeay
* @Description: * @Description:
* @FilePath: /hls_builder/main.go * @FilePath: /hls_builder/main.go
@ -370,39 +370,30 @@ func upload(localPath string, keyPath string, onComplete func()) {
us3cliPath := getUs3cliPath() us3cliPath := getUs3cliPath()
bucket := "us3://jlntv-live/replay/" + keyPath bucket := "us3://jlntv-live/replay/" + keyPath
cmd := exec.Command(us3cliPath, "cp", localPath, bucket, "-r", "--parallel", "10", "--reduce") cmd := exec.Command(us3cliPath, "cp", localPath, bucket, "-r", "--parallel", "20")
// 获取命令的标准输出和错误输出
stdout, err := cmd.StdoutPipe() stdout, err := cmd.StdoutPipe()
if err != nil { if err != nil {
log.Fatal("Error creating stdout pipe:", err) log.Fatal("Error creating stdout pipe:", err)
} }
stderr, err := cmd.StderrPipe()
if err != nil {
log.Fatal("Error creating stderr pipe:", err)
}
// 开始执行命令
if err := cmd.Start(); err != nil { if err := cmd.Start(); err != nil {
log.Fatalf("Failed to start command: %s", err) log.Fatalf("Failed to start command: %s", err)
} }
// 使用协程异步读取输出
go func() { go func() {
scanner := bufio.NewScanner(stdout) buffer := make([]byte, 1024) // 创建一个足够大的buffer
for scanner.Scan() { for {
fmt.Println("STDOUT:", scanner.Text()) n, err := stdout.Read(buffer)
if n > 0 {
fmt.Print("STDOUT:", string(buffer[:n])) // 打印实时输出
}
if err != nil {
break
}
} }
}() }()
go func() {
scanner := bufio.NewScanner(stderr)
for scanner.Scan() {
fmt.Println("STDERR:", scanner.Text())
}
}()
// 等待命令执行完成
if err := cmd.Wait(); err != nil { if err := cmd.Wait(); err != nil {
log.Printf("Command finished with error: %v", err) log.Printf("Command finished with error: %v", err)
} }