首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >进程WaitForExit()永不结束(cmd Openfile)

进程WaitForExit()永不结束(cmd Openfile)
EN

Stack Overflow用户
提问于 2014-10-01 12:17:04
回答 1查看 1.7K关注 0票数 4

此代码在我的测试系统上运行良好(原始Windows 2008 R2的副本)

代码语言:javascript
复制
private string _getNetFiles()
{
    // prepare execution process
    ProcessStartInfo processStartInfo = new ProcessStartInfo("cmd.exe", "/c openfiles /query /Fo list");
    processStartInfo.CreateNoWindow = true;
    processStartInfo.UseShellExecute = false;
    processStartInfo.RedirectStandardError = true;
    processStartInfo.StandardOutputEncoding = System.Text.Encoding.GetEncoding(437);
    processStartInfo.RedirectStandardOutput = true;

    // execute
    Process process = Process.Start(processStartInfo);
    process.WaitForExit();


    // read outputs
    string stdOutput = process.StandardOutput.ReadToEnd();
    string stdError = process.StandardError.ReadToEnd();

    return stdOutput;
}

在原始系统上:我在task中看到了"cmd.exe /c openfiles /query /Fo list“任务,但是这个任务永远不会结束(process.WaitForExit()进程永远不会结束)。Cmd上的原始系统:openfiles /query /fo list工作也很好!

问题在哪里?

问候葡萄干

编辑:我可以用任务管理器停止这个过程.stdOutput是正确的。为什么不结束这场比赛。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-01 12:45:29

子进程正在等待输入或其输出被读取。管道缓冲器不是无限大的。您需要不断地输出标准输出和标准错误。

从进程StandardOutput中获取值看上去很合理。https://stackoverflow.com/a/24084220/122718文档如何安全地读取这两个流。

还请注意cmd的Visual Basic捕获输出汉斯在这个话题上所说的一切

在没有输出重定向的情况下使用Process类是非常棘手的,而且文档也不完整。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26141168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档