STDERR в программе на c ++ - PullRequest
0 голосов
/ 28 февраля 2011

У меня есть программа на С ++, которая подключается по ssh к серверу и выполняет некоторые команды.Если ssh не работает, ошибка выводится на экран, и программа не знает об этом .. и возвращает пустой список вывода.Как я узнаю, что ssh потерпел неудачу?Есть ли способ перенаправить STDERR на что-то, кроме FD?

1 Ответ

0 голосов
/ 28 февраля 2011

Я не знаю, как вы на самом деле делаете SSH.

Если вы system(), тогда я могу предложить вам использовать popen().Это позволит вам получить выходные данные программы.Вы сможете прочитать его из файлового дескриптора вместо того, чтобы отображать его.Затем вы можете добавить команду перенаправления к вашей команде, чтобы stderr перенаправлялся на стандартный вывод и извлекался в fd.

Если вам действительно нужны разделенные стандартный вывод stdout и stderr, то вам нужно реализовать расширенный popen()это также перенаправит stderr самостоятельно.Вы можете сделать это, используя dup2() и fork().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...