stdout.Read替代scanner
This commit is contained in:
parent
dc1dad08f4
commit
57e0df0062
31
main.go
31
main.go
@ -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)
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user