登录
首页 >  Golang >  Go问答

无法通过git-bash.exe打开`CONIN$`进程

来源:stackoverflow

时间:2024-02-16 18:12:22 157浏览 收藏

对于一个Golang开发者来说,牢固扎实的基础是十分重要的,golang学习网就来带大家一点点的掌握基础知识点。今天本篇文章带大家了解《无法通过git-bash.exe打开`CONIN$`进程》,主要介绍了,希望对大家的知识积累有所帮助,快点收藏起来吧,否则需要时就找不到了!

问题内容

当我在 git-bash.exe 中启动 cli.exe 时,它尝试在 windows 上打开进程的终端(打开文件 conin$),但它不起作用:(在 go 中)

// GetCtty gets the file descriptor of the controlling terminal.
// Taken from:
// https://github.com/mattn/go-tty/blob/master/tty_windows.go
func GetCtty() (*os.File, error) {
    in, err := syscall.Open("CONIN$", syscall.O_RDWR, 0)
    if err != nil {
        return nil, err
    }

    return os.NewFile(uintptr(in), "/dev/tty"), nil
}

getctty()返回错误,意思是没有这样的东西? 为什么?在所有其他有效的情况下,wsl bash(执行 .exe)、powershell、cmd、vs code 集成终端(来自 git-for-windows 的 bash.exe...)


正确答案


我无法重现这个。使用此程序:

package main

import (
   "fmt"
   "syscall"
)

func main() {
   _, err := syscall.open("conin$", syscall.o_rdwr, 0)
   fmt.println(err)
}

仅使用 powershell 我就得到了这个:

ps c:\> .\open.exe

然后使用 msys2 bash,我得到这个:

PS C:\> bash.exe
bash-5.1$ ./open.exe

就个人而言,如果 windows 将成为您的“日常驱动程序”,我建议不要使用 git-bash.exe 或 wsl。 go 与 c 不同,在 c 中,您在构建过程中拥有所有这些支持的 makefile 和 shell 脚本。大多数情况下,您只需编写 go 代码,然后使用 go 编译器来编译它。所以我发现 bash 并不真的需要参与这个过程,我现在只使用 powershell。如果你确实因为其他原因需要 bash,你可以 安装 msys2 bash 包:

https://packages.msys2.org/package/bash

终于介绍完啦!小伙伴们,这篇关于《无法通过git-bash.exe打开`CONIN$`进程》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>