c# - 如何在启动进程之前重定向 STDIN .NET 进程

标签 c# .net stdin pos-tagger

我正在尝试制作使用 hunpos tagger 的 C# 应用程序. 运行 hunpos-tag.exe 需要三个输入参数:model、inputFile、outputFile

在 cmd 中它看起来像这样:

hunpos-tag.exe model <inputFile >outputFile

如果我只是用模型运行它,它会写一些东西并等待结束命令。当我尝试使用标准重定向时,我要么得到一个异常(我解决了这个代码被括号关闭的问题,我现在只得到了 or 场景),要么我得到了仅使用模型参数运行标记器的结果。这是代码:

string inputFilePath =  path + "\\CopyFolder\\rr";
string pathToExe = path + "\\CopyFolder\\hunpos-tag.exe";

ProcessStartInfo startInfo = new ProcessStartInfo
    {
         FileName = pathToExe,
         UseShellExecute = false,
         RedirectStandardInput = true,
         WorkingDirectory = Directory.GetDirectoryRoot(pathToExe),
         Arguments = path + "\\CopyFolder\\model.hunpos.mte5.defnpout",
    };

try
{
    Process _proc = new Process();
    _proc.StartInfo.FileName = pathToExe;
    _proc.StartInfo.UseShellExecute = false;
    _proc.StartInfo.RedirectStandardInput = true;
    _proc.StartInfo.Arguments = path + "\\CopyFolder\\model.hunpos.mte5.defnpout";
    //Magic goes here
    _proc.Start();

    _proc.WaitForExit();
}
catch (Exception e)
{
    Console.WriteLine(e);
}

有什么想法可以在开始我的流程之前重定向输入吗?

最佳答案

不仅需要设置RedirectStandardInputtrue,还需要使用输入流来写入你想要的文本:

_proc.StandardInput.WriteLine("The text you want to write");

关于c# - 如何在启动进程之前重定向 STDIN .NET 进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28460711/

相关文章:

c - 从终端读取 input.txt 文件和 output.bmp 文件(C 编程)

c# - 如何获取单选按钮值并将其存储在mysql数据库中

c# - 用 LINQ 合并两个 IEnumerable

c# - 获取唯一的线程 ID

.NET - 浮点比较

.net - 在gridview的末尾插入复选框列

c# - 在 XPath 中查找带有空格的类

.net - 我能否以编程方式查看 .NET 应用程序中的托管堆内容?

c - 最后一个 scanf() 被跳过或忽略

stream - 如何读取 M3 Dart 上的控制台输入