popen () альтернатива
Мой вопрос связан с вопросом, размещенным выше. В первом / принятом ответе мы делаем:
// Child. Let's redirect its standard output to our pipe and replace process with tail
close(pipefd[0]);
dup2(pipefd[1], STDOUT_FILENO);
dup2(pipefd[1], STDERR_FILENO);
Но я хочу отличить ERROR
от обычного OUTPUT
. Как я могу это сделать? Когда я получаю что-то в STDERR, мне нужно реагировать на это.
Это не имеет особого смысла, но я могу сделать следующее?:
int pipefd[3] /* instead of 2 */
dup2(pipefd[1], STDOUT_FILENO);
dup2(pipefd[2], STDERR_FILENO);
Я использую select
, чтобы посмотреть на fd и посмотреть, доступен ли вывод. Но до сих пор мне просто нужно посмотреть на 1-е число, теперь мне нужно посмотреть на 2.
ПРИМЕЧАНИЕ : Труба может иметь только 2 конца, верно? один для записи и другой для чтения. Как я могу приспособить этот третий конец: D ??