C#-当使用Process对象调用时,Process不会退出

本文关键字:Process 退出 对象 C#- 调用 | 更新日期: 2023-09-27 18:21:28

我正在使用C#中的Process对象来启动我的C++二进制文件以执行一些操作。以前我使用的文件名是"cmd.exe",参数是"''cmy_arguments>File.txt"。

它显示了一些问题,比如使用非零退出代码退出。我观察到cmd.exe在崩溃后仍在运行。(来自任务管理器)。

我在参数中使用重定向来获取文件中的所有文本。当从命令提示符手动调用时,C++二进制文件运行良好。

注:-1) 我的二进制文件在控制台上打印大约200-300行的文本数据2) 我的二进制文件调用另一个二进制文件来验证结果。

方法1:-文件名为"Cmd.exe"观察结果:-有时进程会退出,退出代码为非零,cmd.exe在后台运行。(看到这里很惊讶)

 Process p = new Process();
                p.StartInfo.FileName = "cmd";
                p.StartInfo.Arguments = "/C " + test.testExeName + " " + argument + " > " + test.testLogFileName;
                p.StartInfo.WorkingDirectory = demoDest;
                p.Start();

方法2:-文件名:-"我的C++二进制"观察结果:-即使任务管理器显示进程正在运行,进程也不会退出。当我调用它时,它会执行它的操作,但在验证部分,它被困在我调用另一个EXE文件的地方(不确定,但我怀疑在调用这个另一个XE之前,我的测试正确完成了这个步骤)。

Process p = new Process();
                    p.StartInfo.FileName = test.testExeName;
                    p.StartInfo.Arguments = argument;
                    p.StartInfo.RedirectStandardOutput = true;
                    p.StartInfo.UseShellExecute = false;
                    //p.EnableRaisingEvents = true;
                    p.StartInfo.WorkingDirectory = demoDest;
                    p.Start();

我怀疑这个问题是因为输出的重定向。所以计划通过登录到文件来删除所有控制台输出。如果有人在过去遇到过这个问题,请评论

C#-当使用Process对象调用时,Process不会退出

我更新了原始的C++EXE,将所需的结果直接记录到文件中,而不是控制台日志重定向。现在,上述两种指定的方法都开始正常工作。

由于大量的数据重定向,cmd进程被卡住了。现在问题解决了。