Я пытаюсь использовать popen()
, чтобы поймать stderr вызова, но, похоже, это не так. Любые идеи?
Мой код выглядит примерно так:
popen("nedit", "r");
Но у меня на экране вся эта фигня про не-utf8...
Я пытаюсь использовать popen()
, чтобы поймать stderr вызова, но, похоже, это не так. Любые идеи?
Мой код выглядит примерно так:
popen("nedit", "r");
Но у меня на экране вся эта фигня про не-utf8...
popen
дает вам дескриптор файла stdout процесса, а не его stderr. Его первый аргумент интерпретируется как команда оболочки, поэтому вы можете выполнять в нем перенаправления:
FILE *p = popen("prog 2>&1", "r");
или, если вам вообще не нужен стандартный вывод,
FILE *p = popen("prog 2>&1 >/dev/null", "r");
(Допускается также любой другой файл, кроме /dev/null
.)
popen(..., "w");
?
- person Alexis Wilke; 16.07.2016
Если вы хотите сбросить все сообщения об ошибках, вы можете использовать:
popen("nedit 2>/dev/null", "r");