【问题标题】:How to clear StandardInput of the process?如何清除进程的StandardInput?
【发布时间】:2015-10-13 09:55:29
【问题描述】:

我在 c# 应用程序中创建了一个进程,并且可以读取该进程的输出和错误。在执行每个命令之前,我已经使用 Flush() 清除了 StandardInput 缓冲区。但它不起作用。

如何清除进程的标准输入?

注意:进程仍在运行,我只是在执行命令而已。就像在 cmd.exe 中执行命令一样。

我的代码在这里 process.StandardInput.Flush(); process.StandardInput.Write(command);

任何帮助都将不胜感激。

【问题讨论】:

  • 我不认为你可以。您可以阅读所有内容,但即便如此,您怎么知道在哪里停下来?你确定你的问题不能通过其他方式解决吗?
  • 一旦进程停止并且我知道进程结束,我需要在执行命令之前清除输入缓冲区,
  • @spender 修改了问题
  • 您的程序的标准输入缓冲区可能已经发送到您正在控制的进程,并且可能在缓冲区中徘徊。可能无法清除此缓冲区。
  • 只要考虑这种情况,在 cmd 提示符下我按下 [tab] 键后跟 cd 命令,它显示一些路径,现在输入缓冲区有这个命令,现在我想清除它.. 就是这样.

标签: c# process


【解决方案1】:

当您写入标准输入时,为时已晚。 Flush 仅用于发送数据(我不确定它在标准 I/O 的情况下是否有任何作用 - 我不希望它这样做),它并不清楚 时间>任何东西。如果您不想在标准输入中添加某些内容,请不要一开始就发送它。

【讨论】:

    猜你喜欢
    • 2011-04-28
    • 1970-01-01
    • 2013-07-02
    • 1970-01-01
    • 2017-02-15
    • 1970-01-01
    • 2022-01-13
    • 2012-03-05
    • 1970-01-01
    相关资源
    最近更新 更多