我正在使用一个外部库,它要求在终端上输入密码,或者使用一个必须返回正确密码的缓冲区.它自己使用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()))
}

Go相关问答推荐

Go协议缓冲区导入问题

验证访问令牌(密钥罩)

在整个SQL事务中将使用上下文作为默认设置吗?

GORM:一个表的两个外键

Golang在不写入磁盘的情况下为jpeg图像生成一致的哈希

有没有办法让sqlc生成可以使用pgxpool的代码

Golang prometheus:有没有办法衡量出站请求的指标?

此 Golang 程序中的同步问题

GoLang: gocui 边框 colored颜色

Golang crypto/rand 线程安全吗?

泛型:实现嵌套接口

为什么不同的 Wireguard 私钥会产生相同的公钥?

不能使用 mockDB(*MockDB 类型的变量)作为 struct 文字中的 *gorm.DB 值

访问传递给可变参数函数的通用 struct 的特定字段

如何模仿联合类型

如何将多个切片打印为一个切片?

在删除级联时无法在 Gorm 中按预期工作

如果服务器在客户端的 gRPC 中不可用,则等待的方法

不能使用 *T 类型的变量作为参数类型

try 创建新的 etcdv3 客户端时出现pc error: code = Unavailable desc = error reading from server: EOF