我正在使用一个外部库,它要求在终端上输入密码,或者使用一个必须返回正确密码的缓冲区.它自己使用another library来判断终端是否可用.那个图书馆说有一个终端可用,这是正确的.
我想禁用终端,以便使用我提供的缓冲区中的密码.我该怎么做?
我正在使用一个外部库,它要求在终端上输入密码,或者使用一个必须返回正确密码的缓冲区.它自己使用another library来判断终端是否可用.那个图书馆说有一个终端可用,这是正确的.
我想禁用终端,以便使用我提供的缓冲区中的密码.我该怎么做?
这个库通过syscall查看来自终端设备的给定文件描述符.您只需关闭stdin,就到此为止:)如果该库硬编码os.Stdout
,则需要另一个解决方案,因为如果关闭os.Stdout
,则不能再使用终端输出.
下面的代码打印FALSE.
package main
import (
"fmt"
"github.com/mattn/go-isatty"
"os"
)
func main() {
err := os.Stdin.Close()
if err != nil {
fmt.Println("Could not close stdin")
panic(err)
}
fmt.Println(isatty.IsTerminal(os.Stdin.Fd()))
}