2011-05-28 4 views
1

Je suis en train de comprendre stdin, stdout ... et ce sont quelques questions que je
est ici le code que je suis en utilisant:essayer de comprendre stdin, stdout

int main() 
{ 
    struct termios new; 
    tcgetattr(1,&new); 
    new.c_lflag &= ~ECHO; 
    tcsetattr(1,TCSAFLUSH,&new); 
    return 0; 
} 

Je veux savoir ce qui se passe si je tourne ECHO sur stdin plutôt que stdout .... je veux dire, dans les deux cas, je rencontre le même résultat .... comment sont-ils différents ??

Et qu'est-ce que la commande stty retourne? Après avoir exécuté le programme ci-dessus, j'ai fait stty et trouvé -echo pour la ligne = 0, si j'ai raison, il est ECHO sur stdin, mais le programme ECHO désactiver le drapeau pour stdout ??
Désolé, si mes doutes noob son :(

+4

Peut-être que je suis clueless ici, mais je suppose que ce sont plus de questions sur le contrôle des terminaux que sur stdin/stdout. À mon sens, ces derniers ne sont que des flux de données simples. – Joey

Répondre

2

C'est le contrôle terminal. Et si à la fois votre stdin et stdout sont connectés à la même borne, alors vous gérez toujours la même configuration des objets.

tcgetattr simplement .. obtient des informations sur l'objet associé à la FileDescriptor

Bien sûr, ils ne doivent pas être associés à la même borne par exemple, si vous exécutez:

./a.out >file.out alors stdin sera toujours attach ed au terminal, mais stdout est maintenant attaché à un fichier.