We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
go-sh包 ,用到DOCKER操作指令时是无信息返回的。 觉得非常奇怪。 go-sh包所在程序在宿主机上运行,运行docker --help是可以正常获得反馈, 但是使用docker ps -a之类的指令时,是无反馈回来的, 而在cmd面板ssh操作是可以正常反馈的。 是跨容器导致了这个问题吗,有办法解决吗?很头大
The text was updated successfully, but these errors were encountered:
`func shell(s string) (string, error){ //函数返回一个*Cmd,用于使用给出的参数执行name指定的程序 cmd := exec.Command("/bin/bash", "-c", s)
//读取io.Writer类型的cmd.Stdout,再通过bytes.Buffer(缓冲byte类型的缓冲器)将byte类型转化为string类型(out.String():这是bytes类型提供的接口) var out bytes.Buffer cmd.Stdout = &out
//Run执行c包含的命令,并阻塞直到完成。 这里stdout被取出,cmd.Wait()无法正确获取stdin,stdout,stderr,则阻塞在那了 err := cmd.Run() //checkErr(err) return out.String(), err }
`
Sorry, something went wrong.
我怀疑时cmd.Wait()这个函数无法正确获取到stdin,stdout了。 docker ps -a 或进入docker其他指令-it或加上/bin/bash的时候同样也是要调用到exec的。 估计是这个原因,问题是这个问题,真不知道怎么解决
在运行shell脚本时候,有三种方式来调用外部的脚本,exec(exec script.sh)、source(source script.sh)、fork(./script.sh) 1、exec(exec /home/script.sh):
使用exec来调用脚本,被执行的脚本会继承当前shell的环境变量。但事实上exec产生了新的进程,他会把主shell的进程资源占用并替换脚本内容,继承了原主shell的PID号,即原主shell剩下的内容不会执行。
DOCKER PS -A 命令应该是以一个新的shell来进行的 ,因为新的shell集成了原主shell, 所以导致了这个问题;我认为是这样
No branches or pull requests
go-sh包 ,用到DOCKER操作指令时是无信息返回的。
觉得非常奇怪。
go-sh包所在程序在宿主机上运行,运行docker --help是可以正常获得反馈,
但是使用docker ps -a之类的指令时,是无反馈回来的,
而在cmd面板ssh操作是可以正常反馈的。
是跨容器导致了这个问题吗,有办法解决吗?很头大
The text was updated successfully, but these errors were encountered: