Вы не инициализировали переменную «output». В последних строках вашего кода вы делаете это:
while ( read(parentRead, &charIn, 1) > 0 ) {
output = output + (charIn);
printf("%s", output);
}
Что будет плохо, поскольку вы добавляете чтение байта из вашего дочернего процесса в выходную переменную, которая является указателем, содержащим мусор, и затем печатаете содержимое адреса выходной переменной в виде строки. Вы, вероятно, хотите, чтобы «output» был std::string
, чтобы ваш код мог иметь смысл:
std::string output;
/* ... */
while ( read(parentRead, &charIn, 1) > 0 ) {
output += (charIn);
}
std::cout << output;
Как только вы прочитаете все данные, сгенерированные вашим дочерним процессом, вы можете записать их в стандартный вывод.
EDIT : поскольку вы хотите установить содержимое «output» в QPlainTextEdit, вы можете использовать QPlainTextEdit :: setPlainText:
while ( read(parentRead, &charIn, 1) > 0 ) {
output += (charIn);
}
plainTextEdit.setPlainText(output.c_str());