Как создать долгосрочное соединение между консольным приложением go и C# ⇐ C#
Как создать долгосрочное соединение между консольным приложением go и C#
У меня есть довольно простое консольное приложение C#. Это будет процесс добавления переменных double, переданных из части go.
двойная сумма = 0; логический флаг = правда; while(flag) { // выход при ошибке преобразования вар стр = Console.ReadLine(); // запросить строку двойное сложение; флаг = double.TryParse(str, out addend); // конвертируем в двойной сумма += флаг? добавить: 0; //добавляем успех Console.WriteLine(сумма); } вернуть 0; И моя часть тоже проста. Он создает процесс с предыдущим консольным приложением, отправляет ему строки и считывает результаты.
основной пакет Импортировать ( "ФМТ" "йо" "бревно" "ОС/exec" ) функция main() { cmd := exec.Command("%path to app%\\ConsoleApp.exe") // процесс, который будет запущен stdout, err := cmd.StdoutPipe() // используем стандартный выходной канал если ошибка != ноль { log.Fatal(ошибка) } stdin, err := cmd.StdinPipe() // используем std в канале если ошибка != ноль { log.Fatal(ошибка) } если ошибка := cmd.Start(); ошибка != ноль { // начало log.Fatal(ошибка) } для истинного { строка вар w1 _, err := fmt.Scanln(&w1) // читаем строку если ошибка != ноль { журнал.Фатальный() } иди в функцию() { io.WriteString(stdin, w1) // передаем его в консольное приложение }() read, err := io.ReadAll(stdout) // результат чтения fmt.Println(читать) если ошибка != ноль { журнал.Фатальный() } } } Я запускаю отладку процесса консольного приложения (он появляется в диспетчере задач, RMC - Отладка), но появляются ошибки символов, поэтому я даже не могу понять, получило ли мое приложение строку или нет.
Это только половина моих проблем. Я думаю, что один или два раза мое консольное приложение получало строку (я имею в виду в предыдущие разы), но только первую, потому что канал закрывался после передачи/копирования из него. Итак, как я могу это контролировать? Я хочу выполнить несколько транзакций, писать и читать и закрывать каналы только тогда, когда мне это нужно.
У меня есть довольно простое консольное приложение C#. Это будет процесс добавления переменных double, переданных из части go.
двойная сумма = 0; логический флаг = правда; while(flag) { // выход при ошибке преобразования вар стр = Console.ReadLine(); // запросить строку двойное сложение; флаг = double.TryParse(str, out addend); // конвертируем в двойной сумма += флаг? добавить: 0; //добавляем успех Console.WriteLine(сумма); } вернуть 0; И моя часть тоже проста. Он создает процесс с предыдущим консольным приложением, отправляет ему строки и считывает результаты.
основной пакет Импортировать ( "ФМТ" "йо" "бревно" "ОС/exec" ) функция main() { cmd := exec.Command("%path to app%\\ConsoleApp.exe") // процесс, который будет запущен stdout, err := cmd.StdoutPipe() // используем стандартный выходной канал если ошибка != ноль { log.Fatal(ошибка) } stdin, err := cmd.StdinPipe() // используем std в канале если ошибка != ноль { log.Fatal(ошибка) } если ошибка := cmd.Start(); ошибка != ноль { // начало log.Fatal(ошибка) } для истинного { строка вар w1 _, err := fmt.Scanln(&w1) // читаем строку если ошибка != ноль { журнал.Фатальный() } иди в функцию() { io.WriteString(stdin, w1) // передаем его в консольное приложение }() read, err := io.ReadAll(stdout) // результат чтения fmt.Println(читать) если ошибка != ноль { журнал.Фатальный() } } } Я запускаю отладку процесса консольного приложения (он появляется в диспетчере задач, RMC - Отладка), но появляются ошибки символов, поэтому я даже не могу понять, получило ли мое приложение строку или нет.
Это только половина моих проблем. Я думаю, что один или два раза мое консольное приложение получало строку (я имею в виду в предыдущие разы), но только первую, потому что канал закрывался после передачи/копирования из него. Итак, как я могу это контролировать? Я хочу выполнить несколько транзакций, писать и читать и закрывать каналы только тогда, когда мне это нужно.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение