这是我在这里的第一个问题,所以我会尽可能详细,我可以。 我目前工作的一个C#程序(我们叫它TestProgram),测试用C语言编写不同的程序(我将称之为StringGen)。 TestProgram应该在命令窗口运行StringGen,然后给它的一组输入串并记录每一个的输出。 当StringGen运行时,它启动一个while循环,其等待输入,提出,输入到处理功能,然后返回结果。
我的问题来自当我尝试和有TestProgram提交字符串StringGen。 我开始StringGen作为一个过程,并试图用Process.StandardInput.WriteLine()给它输入,然后寻找输出与Process.StandardOutput.ReadLine()。 在我进一步阐述,我给你提供一些代码。
下面是StringGen主要功能:
int main() {
char result[255];
char input[255];
do {
fgets(input, 100, stdin);
result = GetDevices(input); //Returns the string required
printf("%s", result);
} while (input != "quit");
return 0;
}
下面是C#代码,我限定StringGen作为一个过程:
Process cmd = new Process();
ProcessStartInfo info = new ProcessStartInfo(command, arguements); // Command is the path to the C executeable for StringGen
info.WorkingDirectory = workingDirectory; // Working Directory is the directory where Command is stored
info.RedirectStandardInput = true;
info.RedirectStandardOutput = true;
info.RedirectStandardError = true;
info.UseShellExecute = false;
cmd.StartInfo = info;
cmd.Start();
然后,我继续使用这个过程像这样:
using (var cmd)
{
// Loop through the input strings
String response;
foreach (exampleString in StringSet) // Loops through each string
{
cmd.StandardInput.WriteLine(exampleString.text); // This is the problem line
response = cmd.StandardOutput.ReadLine(); // System comes to a halt here
cmd.StandardOutput.Close();
if (response == "Something")
{
// Do this
}
else
{
// Do that
}
}
}
该命令的WriteLine似乎并没有给任何输入StringGen,因此系统在挂起的ReadLine因为StringGen不给任何输出了。 我试着在命令行中运行StringGen并能正常工作,并从键盘获取输入,输出正确的字符串后面。 我用尽了一切我能想到的,并找遍了这个网站,以及其他试图找到一个解决办法,但这种代码的每一个例子似乎是每个人都做工精细。 我看不到我在做什么错。 如果任何人都可以提出一个方法,我可以从TestProgram提交输入到我的StringGen程序,我将非常感激。 如果我走任何东西了,或者如果有不清楚的地方很重要,请让我知道。
注:我曾经尝试都scanf函数和与fgets在StringGen,都产生相同的结果。
我已经使用文本字符串的WriteLine()试过了,但仍然没有投入。
我曾尝试在TestProgram但无济于事期运用写()和flush()。
我曾试图关闭()输入缓冲区强制冲洗,但这并没有影响无论是。
我不是太熟悉C#,因为我编辑别人的代码在StringGen进行测试。