猿问

如何暂停程序?

我想实现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语言本身来实现暂停功能?


呼如林
浏览 207回答 3
3回答

智慧大石

只需从标准输入读取。用户必须按回车键才能继续程序。或者将终端设置为“原始”模式。对于后一种情况,例如。nsf的术语箱

子衿沉夜

从标准输入中读取一行,然后丢弃它(source):bio := bufio.NewReader(os.Stdin) line, hasMoreInLine, err := bio.ReadLine()

人到中年有点甜

我不知道,如果你能做到这一点,如果你没有禁用,除非你uncook然后终端(禁用输入缓冲)>这里是一个简单的解决方案到这取决于操作系统,以便更好地询问用户按下 Enter 键。您还想捕获诸如Ctrl+Z或 之类的信号Ctrl+C。c := make(chan os.Signal)d := make(chan bool)// Capture Controlsignal.Notify(c, os.Interrupt, os.Kill)//Capture Entergo func() {&nbsp; &nbsp; bio := bufio.NewReader(os.Stdin)&nbsp; &nbsp; bio.ReadByte()&nbsp; &nbsp; d <- true}()fmt.Println("Any key to continue... ")// Blockselect {&nbsp; &nbsp; case <- d :&nbsp; &nbsp; case <- c :}fmt.Println("Mission Completed")
随时随地看视频慕课网APP

相关分类

Go
我要回答