Stavo eseguendo un programma (valgrind, in realtà) sulla mia macchina Ubuntu, e avevo reindirizzato sia stdout che stderr su file diversi. Sono stato sorpreso di vedere sullo schermo un breve messaggio: com'è possibile? Come potrei farlo da solo in un programma C++?Come può un programma Unix visualizzare sullo schermo anche quando lo stdout e lo stderr vengono reindirizzati?
EDIT: Ecco il comando che ho usato, e l'uscita:
$ valgrind ./myprogram > val.out 2> val.err
*** stack smashing detected ***: ./myprogram terminated
EDIT2: Giocando con un po 'di più, si scopre che myprogram, non valgrind, sta causando il messaggio da stampare, e come risposta al di sotto, sembra che gcc pila smashing codice di rilevamento è la stampa a/dev/tty
Puoi condividere il vostro comando utilizzato – Steephen
aprire direttamente il dispositivo di visualizzazione. per esempio. 'echo 'foo'>/dev/pts/0' –
Sembra un messaggio dato dal kernel – xuhdev