]> Zhao Yanbai Git Server - kernel.git/commitdiff
修复serial_monitor的bug
authoracevest <zhaoyanbai@126.com>
Fri, 13 Oct 2023 11:25:54 +0000 (19:25 +0800)
committeracevest <zhaoyanbai@126.com>
Fri, 13 Oct 2023 11:25:54 +0000 (19:25 +0800)
scripts/serial_monitor/main.go

index aa762efe148b036429ae10d820af7d6802899ff8..67bdd2851c7a1311518738a91e52fa60f893dde2 100644 (file)
@@ -40,22 +40,24 @@ func monitor() {
                }
        }
 
-       // // 创建一个 WaitGroup 以便在两个协程完成时结束程序
-       // var wg sync.WaitGroup
-       // wg.Add(2)
+       defer conn.Close()
+
+       end := make(chan bool, 0)
 
        // 将串行控制台的输出发送到屏幕
        go func() {
                _, _ = io.Copy(os.Stdout, conn)
-               // wg.Done()
+               log.Printf("qemu -> stdout end\n")
+               end <- true
        }()
 
        // 将用户输入发送到串行控制台
        go func() {
                _, _ = io.Copy(conn, os.Stdin)
-               // wg.Done()
+               log.Printf("stdin -> qemu end\n")
+               end <- true
        }()
 
-       // // 等待两个协程完成
-       // wg.Wait()
+       // 只要有一方断开就退出
+       <-end
 }