2010-05-20 5 views
4

Par défaut, certains programmes mettent en forme leur sortie en fonction du type de flux dans lequel ils écrivent. Par exemple, la sortie de ls et ls > file semble différemment. J'aimerais savoir comment cela est réalisé par un programme. De plus, existe-t-il un moyen de tromper de tels programmes comme si le flux de sortie était un terminal où il s'agit réellement d'un fichier (surtout quand aucune option n'affecte le format de sortie)?Faux type de flux de sortie

Répondre

5

Via isatty:

if (!isatty(fileno(stdout)) 
{ 
    // redirected to a file or piped to a process 
} 

Une façon de tromper est au lieu de faire redirect, commencer script. Maintenant, tout ce qui va à 'tty' (y compris ce que vous tapez dans stdin et ce qui est envoyé à la sortie) est envoyé à un fichier appelé typecript.

+0

mieux stdout chèque, non stdin. – ThiefMaster

+0

@ThiefMaster - merci pour les heads-up. Fixé. –

Questions connexes