【发布时间】:2020-09-09 11:45:06
【问题描述】:
我需要在go 中模拟一个终端。我尝试这样做:
lsCmd := exec.Command("bash", "-c", "ls")
lsOut, err := lsCmd.Output()
if err != nil {
panic(err)
}
fmt.Println(string(lsOut))
而且它似乎工作正常(原生 ubuntu 终端显示一个水平列表,这个函数的结果是垂直的)。
但如果我专门调用了错误的命令,例如exec.Command ("bash", "-c", "lss"),我会得到:
恐慌:退出状态 127
在本地 ubuntu 终端中,我得到以下结果:
找不到命令“lss”,您的意思是:
和命令的枚举。
我需要与原生终端通信,如果我在标准的ubuntu终端中编写命令,得到与命令结果相同的结果。
最好的方法是什么?也许exec 库不适合这个?所有这些对于与 OS 终端的前端通信都是必需的。在一个简单的html/css/js页面上,用户输入一个命令,go之后发送到操作系统的本机终端,并将结果返回给前端。
如何获得与在本机终端中工作一样的执行命令结果?
【问题讨论】:
-
shell 将错误写入 stderr。从子进程中捕获 stderr 并打印。
标签: go terminal-emulator