Получить ввод и вывод из другого процесса C# - PullRequest
0 голосов
/ 10 апреля 2020

Перед началом позвольте мне сказать, что я уже пытался использовать вариант, который описан там .

Проблема в следующем, у меня есть очень простая программа в C, которая просто пишет в вывод и чтение ввода.

#include <stdio.h>
#include <stdint.h>

int main()
{
    int size;

    printf("Enter size: ");
    scanf("%d", &size);
    printf("\n size = %d", size);

    return 0;
}

Вторая программа написана в C#. Эта программа должна начинаться сначала с другого процесса и получать ввод и вывод. Но программа зависает при попытке прочитать ввод. При первом звонке Console.Write(process.StandardOutput.ReadLine());

static void Main(string[] args)
{
    try
    {
        var fName = "test.exe";
        var pci = new ProcessStartInfo
        {
            FileName = fName,
            Arguments = "/c DIR",
            UseShellExecute = false,
            RedirectStandardInput = true,
            RedirectStandardOutput = true,
            RedirectStandardError = true,
            CreateNoWindow = true,
        };

        using (var process = Process.Start(pci))
        {
            Console.WriteLine(process.ProcessName);

            Console.Write(process.StandardOutput.ReadLine());
            process.StandardInput.WriteLine("4");
            Console.Write(process.StandardOutput.ReadLine());

            process.WaitForExit(1000);
        }
    }
    catch (Exception e)
    {
        Console.WriteLine(e.Message);
    }
    Console.ReadLine();
}

Кто-нибудь знает, почему он завис? Или где посмотреть?

PS с asny c проблема с чтением та же

...