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