我正在尝试制作使用 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);
}
有什么想法可以在开始我的流程之前重定向输入吗?
最佳答案
不仅需要设置RedirectStandardInput
为true
,还需要使用输入流来写入你想要的文本:
_proc.StandardInput.WriteLine("The text you want to write");
关于c# - 如何在启动进程之前重定向 STDIN .NET 进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28460711/