Necesito crear un nuevo proceso con flujo de error estándar redirigido a algún archivo. El código del proceso secundario que se está creando no tiene ninguna consola disponible, por lo que hay casos en que GetStdHandle (any) devolverá 0. Child Process intentará duplicar todos sus identificadores de IO estándar por alguna razón (el código fuente para el proceso hijo no está disponible)) por lo que todos sus identificadores deberían ser válidos.¿Cómo abrir un archivo "nul"?
por eso es necesario para ejecutar el proceso de la misma manera como se le puede corrió desde la consola con:
someproc <nul >nul 2>err
veo algunas maneras para esto: 1. Cree dos pares de tubos. Esta es posiblemente una buena solución, pero será demasiado compleja para mí. 2. Abra el archivo "nul" con la llamada de función CreateFile ("nul", ...). No se está creando ningún archivo con esta llamada, pero esto también me parece extraño. 3. Use INVALID_HANDLE_VALUE. Esto también funciona, pero creo que puede haber diferentes problemas con otros procesos secundarios.
Creo que hay mejores formas.
¡Muy bien! Gracias por enumerar las posibilidades. –