c popen no atrapará stderr

Estoy intentando usar popen() para capturar el stderr de una llamada, pero por supuesto no parece estar haciendo eso. ¿Algunas ideas?

Mi código se parece más o menos a esto:

 popen("nedit", "r"); 

Pero estoy sacando toda esta basura sobre no-utf8 en mi pantalla …

popen le proporciona un identificador de archivo en un proceso ‘stdout, no en stderr. Su primer argumento se interpreta como un comando de shell, por lo que puede hacer redirecciones en él:

 FILE *p = popen("prog 2>&1", "r"); 

o, si no quiere el stdout en absoluto,

 FILE *p = popen("prog 2>&1 >/dev/null", "r"); 

(Cualquier otro archivo además de /dev/null es aceptable).

Si desea descartar todos los mensajes de error, puede usar:

 popen("nedit 2>/dev/null", "r");