Cout на родительский терминал после разветвленного псевдотерминала

Сначала я покажу вам небольшой псевдокод:

cpid = forkpty (&compipe, NULL, NULL, NULL);

//yes i have some error handling here, but its not important yet

if (cpid == 0) //child process
{
//here are some pipes closed,
//and the forked child will exec(ute) third party process
}

else //parent process
{
//here are just closing some other pipe ends,
//and settings up some fcntl flags like O_NONBLOCK

if (string (execResult) == "fail")
{
//HERE ARE THE PROBLEM!!
//This debug message will print to the pseudo-terminal (i think)
//because it is not visible in "main"-terminal / console
gui -> appendDbg (Output::EROR, "Could not execute FOO");
printDbg (EROR, "Could not execute FOO");
}

else
{
//But I don't understand why this debug message prints to
//the "main"-terminal where the application was started from
printDbg (INFO, "Starting child process: 'FOO' with PID: " +to_string (cpid));
printChildsOut();
}
}

Хорошо, моя проблема описана в части if-else, где будет проверен результат выполнения.

Дело в том, что я не вижу своего сообщения отладки под названием «EROR …», но я вижу сообщение отладки информации под названием «INFO …» в моем «главном» терминале, откуда было запущено приложение.

Кстати, функция ‘printDbg’ разработана мной и просто печатает сообщения через ‘cout’.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]