Я хочу написать в std::cerr
или std::cout
с моим приложением MFC. В сценарии python я вызываю это приложение, и я хочу читать от stdout
или stderr
. Оба не работают. Просто использование std::cout
не дает выхода. После AllocConsole()
я, по крайней мере, мог печатать на консоли отладки. К сожалению, на сайте python по-прежнему нет выхода.Запись в стандартный вывод с MFC и чтение stdout by python Popen
В моем MFC приложении я инициализировать консоль, чтобы написать этот код:
void BindStdHandlesToConsole()
{
// Redirect the CRT standard input, output, and error handles to the console
freopen("CONIN$", "r", stdin);
freopen("CONOUT$", "w", stdout);
freopen("CONOUT$", "w", stderr);
std::wcout.clear();
std::cout.clear();
std::wcerr.clear();
std::cerr.clear();
std::wcin.clear();
std::cin.clear();
}
// initialization
BOOL foo::InitInstance()
{
// allocate a console
if (!AllocConsole())
AfxMessageBox("Failed to create the console!", MB_ICONEXCLAMATION);
else
BindStdHandlesToConsole();
На сайте питона, я пытаюсь напечатать вывод.
process = subprocess.Popen(args,stdout=subprocess.PIPE,shell=True)
output = process.stdout.read()
process.wait()
Есть ли способ сделать мою программу MFC действительно писать, а скрипт python читать стандартный вывод?
Попробуйте установить 'STDERR = subprocess.PIPE', а затем с помощью' (выход, ошибка) = process.communicate() ' без 'read()' и '.wait()'. – cdarke
Еще нет вывода :( – dgrat
Вы тестируете 'output' и' error'? – cdarke