2016-10-17 4 views
0

Я запускаю исполняемый файл (написанный на C#) из программы на C++, используя системную команду и передавая ей строку. Исполняемый файл возвращает некоторую строку. Возможно ли получить доступ к строке, возвращаемой исполняемым файлом из программы на C++? Есть ли простой способ сделать это с помощью команды system? Я использую визуальную студию.Доступ к значениям, возвращаемым исполняемым файлом C++

+0

Вы можете использовать стандартный вывод для получения возвращаемых значений. вход в C# может быть либо в списке параметров, либо через стандартный ввод. – jdweng

+0

Я передаю вход в файл exe как: system ((std :: string ("C: \\ file.exe") + вывод) .c_str()); Где file.exe является исполняемым файлом C#. Как я могу получить доступ к выводам из программы C++? – Programmer1

+0

Вы используете файл для передачи данных не так, как я предложил использовать поток (стандартный ввод и стандартный вывод). В C++ используйте stdout и stdin в качестве указателей файлов для ввода ввода и вывода (стандартная библиотека ввода-вывода C++) из программы C#. – jdweng

ответ

1

Если вы имеете в виду, что строка записывается в командную строку программы C#, и вы хотите ее записать, вы можете использовать именованные каналы для перехвата вывода, сгенерированного программой C#.

см https://msdn.microsoft.com/en-us/library/ms682499.aspx

из вашей C++ программы

Или, пожалуйста, уточнить, что вы подразумеваете под «запуском исполняемого файла» и «с помощью системной команды» - вы пишете код или работает в команде незамедлительный ?

+0

Я предположил, что вы использовали WIndows, когда вы работаете aC# программа. Если для среды Linux: http://stackoverflow.com/questions/478898/how-to-execute-a-command-and-get-output-of-command-within-c-using-posix –

+0

У меня есть программа, написанная в C++, из которого я вызываю exe.file, написанный на C#, используя этот код: system ((std :: string ("C: \\ file.exe") + вывод) .c_str()); от визуальной студии. Теперь я хотел бы прочитать результат, возвращаемый исполняемым файлом из кода C++. – Programmer1

+0

вы должны работать в Windows, поэтому popen не подходит для вас - прочитайте ссылку msdn, которую я вам отправил, она показывает вам, как делать эквивалент в C++ в Windows - popen и CreatePipe - это API, специфичные для ОС. Вам нужно будет вручную управлять процессом C#, чтобы у вас был дескриптор процесса, который вы можете передать API окон для контроля стандартного вывода. См. Пример здесь http://stackoverflow.com/questions/28222285/make-c-program-to-pass-input-output-to-windows-command-prommpt-interactively –

Смежные вопросы