Ver Mensaje Individual
  #4 (permalink)  
Antiguo 17/12/2012, 03:47
Avatar de dontexplain
dontexplain
 
Fecha de Ingreso: junio-2012
Mensajes: 536
Antigüedad: 12 años, 5 meses
Puntos: 127
Respuesta: cout como pasarlos a un txt ?

Si estás en Windows o Linux existe el operando > que designa hacia dónde se dirige el stream de salida (o stdout) del proceso.

proceso.exe > C:\texto.txt

stderr (o la salida de errores) tiene el código 2 y se redirige igual

2>&1

que redirige el flujo sterr (2) hacia el flujo stdout (&1) por lo que queda finalmente

proceso.exe > C:\texto.txt 2>&1

Recuerda que los códigos son

0 para stdin o flujo de entrada
1 para stdout o flujo de salida
2 para stderr o flujo de salida de errores
3 - 9 que son reservados

Operadores &

La norma sobre los & indica que se colocan siempre o >& o <& indicando que se escribe:

A >& B -> de la salida de un proceso A a la entrada de B (por defecto para casi todo)
B <& A -> de la entrada de un proceso A a la salida de otro B (como un pipe inverso)


1<&2 // redirige el flujo stderr hacia el flujo stdout (de la entrada de stderr a al salida de stdout), que podría ser perfectamente de la salida de stderr a la entrada de stdout si se intercambian los operadores

2>&1

Si se usan varios operadores se puede razonar un poco más acertadamente lo que hacen los operadores

A > B 1<&2

Que mueve primero de la salida de A a la entrada de B mientras que mueve de la entrada de stderr a la salida de stdout. Por lo que stderr acaba en B.

Combinando salida y entrada

Para indicar al mismo tiempo y mediante los operadores > y < la salida y la entrada de un proceso se pueden usar:

proceso.exe < flujo de entrada del proceso > log de salida del proceso


y más tarde se combina con

proceso.exe < flujo de entrada del proceso > log de salida del proceso 2>&1

que además, como expliqué antes, mueve la salida de errores a la entrada de stdout y de la entrada de stdout, y de ahí de nuevo al log de salida (por lo que tanto stdout como stderr acaban en el mismo sitio, en el log). Y para completarlo más aún

proceso.exe < flujo de entrada de proceso > log de salida de proceso 2 > log de salida de errores 3 > log opcional para otros códigos

Evitar la sustitución

y para evitar que se borre la información del fichero y que la salida del proceso se escriba al final del fichero sin sobreescribir lo anterior se usa el operador

A >> B

que mueve la salida del proceso A hacia la entrada del fichero B

Un saludo.
__________________
21añero.
HTML/CSS, PHP, JS/jQuery, Mysql; NodeJS/Socket.io (& V8); C++ ; Python (wxpy); Ensamblador.
Músico (clarinetista/pianista) y compositor

Última edición por dontexplain; 17/12/2012 a las 04:42