Por que o Process.StandardInput.WriteLine não fornece entrada para o meu processo?

Esta é a minha primeira pergunta aqui, então vou ser o mais detalhado possível. Atualmente estou trabalhando em um programa c # (vamos chamá-lo TestProgram) que testa um programa diferente escrito em C (que eu vou referir como StringGen). O TestProgram deve rodar o StringGen em uma janela de comando, depois alimentá-lo com um conjunto de strings de entrada e gravar a saída para cada um. Quando StringGen é executado, ele inicia um loop while que aguarda por uma entrada, envia essa entrada para a função de processamento e, em seguida, retorna o resultado.

Meu problema vem quando eu tento fazer com que o TestProgram envie uma string para o StringGen. Eu estou começando StringGen como um processo e tentando alimentá-lo de entrada com Process.StandardInput.WriteLine (), em seguida, procurando saída com Process.StandardOutput.ReadLine (). Antes de elaborar mais, vou fornecer algum código.

Aqui está a principal função do 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;
}

Aqui está o código C # onde eu defino StringGen como um processo:

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();

Então eu uso esse processo da seguinte forma:

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
                }
            }
       }

O comando WriteLine não parece fornecer nenhuma entrada para StringGen e, portanto, o sistema trava no ReadLine porque StringGen não está dando nenhuma saída de volta. Eu tentei executar StringGen na linha de comando e funciona bem e leva a entrada do teclado e retorna as cordas corretas para trás. Eu tentei tudo o que posso pensar e procurou em todo este site e outros tentando encontrar uma solução, mas cada exemplo deste tipo de código parece funcionar bem para todos os outros. Eu não consigo ver o que estou fazendo errado. Se alguém puder sugerir uma maneira de enviar uma entrada para o meu programa StringGen do TestProgram, ficaria muito grato. Se eu tiver deixado algo importante para fora ou se algo não estiver claro, por favor me avise.

Notas: Eu tentei scanf e fgets em StringGen, ambos produzem o mesmo resultado.

Eu tentei usar uma seqüência literal com WriteLine (), mas ainda não entrada.

Eu tentei usar Write () e Flush () no TestProgram, mas sem sucesso.

Eu tentei fechar () o buffer de entrada para forçar um flush, mas isso também não tem efeito.

Eu não estou muito familiarizado com o C # como estou editando código de alguém para realizar testes no StringGen.