Reindirizzamento dei messaggi di errore dal prompt dei comandi: STDERR/STDOUT

Questo articolo descrive i messaggi di errore di reindirizzamento dal prompt dei comandi.

Versione originale del prodotto: Visual C++
Numero KB originale: 110930

Riepilogo

Quando si reindirizza l'output da un'applicazione usando il > simbolo , i messaggi di errore vengono ancora stampati sullo schermo. Questo perché i messaggi di errore vengono spesso inviati al flusso Errore standard anziché al flusso Standard Out.

L'output da un'applicazione o un comando della console (prompt dei comandi) viene spesso inviato a due flussi separati. L'output normale viene inviato a Standard Out (STDOUT) e i messaggi di errore vengono inviati a Standard Error (STDERR). Quando si reindirizza l'output della console usando il > simbolo , si sta reindirizzando solo STDOUT. Per reindirizzare STDERR, è necessario specificare 2> per il simbolo di reindirizzamento. In questo modo viene selezionato il secondo flusso di output stderr.

Esempio

Il comando dir file.xxx (dove file.xxx non esiste) visualizzerà l'output seguente:

Volume nell'unità F è Candy Cane Volume Numero di serie è 34EC-0876
File non trovato

Se si reindirizza l'output al dispositivo NUL usando dir file.xxx > nul, verrà comunque visualizzato il messaggio di errore:

File non trovato

Per reindirizzare il messaggio di errore a NUL, usare il comando seguente:

dir file.xxx 2> nul

In alternativa, è possibile reindirizzare l'output in una posizione e gli errori a un'altra.

dir file.xxx > output.msg 2> output.err

È possibile stampare gli errori e l'output standard in un singolo file usando il &1 comando per reindirizzare l'output per STDERR a STDOUT e quindi inviare l'output da STDOUT a un file:

dir file.xxx 1> output.msg 2>&1