【问题标题】:CreateProcess, process do not terminate when redirecting std out/in/errCreateProcess,重定向stdout/in/err时进程不终止
【发布时间】:2010-02-01 09:28:55
【问题描述】:

我正在尝试使用 CreateProcess 从我的应用程序中启动一个 powershell 脚本。

我已使用 Microsoft 示例 (http://msdn.microsoft.com/en-us/library/ms682499(VS.85).aspx) 创建子进程并重定向标准的输出/输入/错误管道。

唯一需要解决的问题是为什么子进程(powershell)在执行命令后没有终止。

如果我执行 powershell 进程(使用命令)cmd.exe,它会执行并退出,关闭进程。

现在关闭 powershell 进程的唯一方法是在句柄上运行 TerminateProcess,但这感觉像是最后的手段。

【问题讨论】:

  • 想补充一点,我正在 vista 下测试这个,具有管理员权限。

标签: c++ powershell createprocess


【解决方案1】:

您的父母是否完整阅读了孩子的标准输出?如果您不阅读全部内容,那么我相信孩子会挂起。此外,如果脚本需要输入,您必须向孩子的标准输入写入一些内容,否则它将挂起。您可以将 windbg 附加到孩子身上,看看它挂在哪里;也许它会让你知道在哪里看。

【讨论】:

    【解决方案2】:

    在 linux 中,如果没有完全重定向输出并且父进程被杀死,子进程也会被杀死。因此,当父进程被杀死时,您可以查看有关重新排列子进程的 Windows 文档。

    【讨论】:

      猜你喜欢
      • 2010-11-18
      • 2019-01-19
      • 2021-04-18
      • 1970-01-01
      • 1970-01-01
      • 2012-03-14
      • 2012-07-14
      • 2015-08-18
      • 1970-01-01
      相关资源
      最近更新 更多