gpt4 book ai didi

c# - 我的进程在等待输入吗?

转载 作者:太空宇宙 更新时间:2023-11-03 16:10:07 24 4
gpt4 key购买 nike

我正在使用 Process 类来运行 exe。

exe 是我无法控制的第 3 方控制台应用程序。

我想知道进程是否在等待命令行输入。

如果它有什么不同,我打算在应用程序等待输入时终止它。

当程序有输出等待读取时有合适的事件,但当进程耐心等待输入时我看不到任何类似的事件。

            ProcessStartInfo info = new ProcessStartInfo();
info.FileName = "myapp.exe";
info.CreateNoWindow = true;
info.UseShellExecute = false;
info.RedirectStandardError = true;
info.RedirectStandardInput = true;
info.RedirectStandardOutput = true;
process.StartInfo = info;

process.OutputDataReceived += new DataReceivedEventHandler(process_OutputDataReceived);
process.ErrorDataReceived += new DataReceivedEventHandler(process_ErrorDataReceived);

process.Start();

process.BeginOutputReadLine();
process.BeginErrorReadLine();


process.WaitForExit();

如何检测我的进程正在等待输入?

最佳答案

根据第 3 方进程正在做什么,您可以尝试轮询其线程的状态:

foreach(ProcessThread thread in process.Threads)
if (thread.ThreadState == ThreadState.Wait
&& thread.WaitReason == ThreadWaitReason.UserRequest)
process.Kill();

如果不行...你可以试试

process.StandardInput.Close();

在调用 Start() 之后,我推测如果子进程试图从标准输入中读取,将会引发异常。

关于c# - 我的进程在等待输入吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17799685/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com