我想实现pause类似 windows shell command的功能pause。例如,$ go run script.go
Any key to continue... //Then any key to continue在 windows 上,我们可以通过 golang 函数使用 system 命令exec.Command()。但是在 Linux 上呢?我想将该命令read -n1 -p "Any key to continue"用作妥协的命令,但它在函数中不起作用exec.Command("read", "-n", "1")。我测试了很多,但不知道为什么。另外,有没有人知道如何在不使用外部命令的情况下仅通过golang语言本身来实现暂停功能?
3 回答
人到中年有点甜
TA贡献1895条经验 获得超7个赞
我不知道,如果你能做到这一点,如果你没有禁用,除非你uncook然后终端(禁用输入缓冲)>这里是一个简单的解决方案到
这取决于操作系统,以便更好地询问用户按下 Enter 键。您还想捕获诸如Ctrl+Z或 之类的信号Ctrl+C。
c := make(chan os.Signal)
d := make(chan bool)
// Capture Control
signal.Notify(c, os.Interrupt, os.Kill)
//Capture Enter
go func() {
bio := bufio.NewReader(os.Stdin)
bio.ReadByte()
d <- true
}()
fmt.Println("Any key to continue... ")
// Block
select {
case <- d :
case <- c :
}
fmt.Println("Mission Completed")
- 3 回答
- 0 关注
- 201 浏览
添加回答
举报
0/150
提交
取消