登录
首页 >  Golang >  Go问答

从父进程捕获子进程的输出并实时显示

来源:stackoverflow

时间:2024-03-15 17:03:22 259浏览 收藏

在多进程编程中,捕获子进程的输出并实时显示是常见需求。本文将探讨如何在父进程中捕获交互式子进程(如 Python)的输出,并将其实时显示在父进程的终端上。通过理解进程 I/O 重定向和 Python 交互模式,开发者可以实现子进程输出的有效获取和显示。

问题内容

我正在尝试从父进程获取交互式子进程(如 python)的输出。我尝试使用以下代码将进程 stdin 更改为 os.stdin 并将 stdout 更改为 os.stdout 但它不起作用。我在父进程的终端上看不到子进程的输出。我是否遗漏了什么或做错了什么?

func main(){
  cmd := exec.Command("python")
  cmd.Stdin = os.Stdin
  cmd.Stdout = os.Stdout
  cmd.Stderr = os.Stderr
  err := cmd.Run()
  if err != nil{
    fmt.Println("Cannot Execute cmd.")
  }
}

解决方案


运行 exec.Command("python", "-i")

默认情况下,当不在 shell 中运行 python 时,它不会进入交互模式,也不会打印任何内容。

终于介绍完啦!小伙伴们,这篇关于《从父进程捕获子进程的输出并实时显示》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

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