我正在Go中编写一个程序来执行类似程序的服务器(也是Go).现在我想在我启动父程序的终端窗口中输入子程序的标准输出.一种方法是使用该cmd.Output()函数,但只有在进程退出后才打印stdout.(这是一个问题,因为这个类似服务器的程序运行了很长时间,我想读取日志输出)
变量out是,type io.ReadCloser我不知道我应该怎么做才能完成我的任务,我在网上找不到任何有用的信息.
func main() {
cmd := exec.Command("/path/to/my/child/program")
out, err := cmd.StdoutPipe()
if err != nil {
fmt.Println(err)
}
err = cmd.Start()
if err != nil {
fmt.Println(err)
}
//fmt.Println(out)
cmd.Wait()
}
Run Code Online (Sandbox Code Playgroud)
代码说明:取消注释Println函数以获取编译代码,我知道这Println(out io.ReadCloser)不是一个有意义的函数.
(它产生输出&{3 |0 <nil> 0})这两行只是获取编译代码所必需的.
我正在进入GUI编程并做了一些研究.现在不是一切都清楚了.如果我使用GTK +作为工具包,它如何与显卡通信?
在Linux系统上,我认为它将是GTK - > X Server - (OpenGL) - >显卡.这是正确的吗?
我读到一些GUI直接绘制OpenGL(例如Blender3D),那么其他应用程序如何绘制他们的GUI?
如果显卡的唯一API(我知道)是Direct3D和OpenGL,那么软件渲染和硬件加速之间的区别是什么?
可以将"软件渲染"的软件直接写入显卡的帧缓冲区,以便OpenGL不受影响吗?
PS:对不起有很多问题,但我真的不知道这一切是如何运作的,谢谢你的每一个答案:)