Détermination d'une connexion de terminal ou de tuyau en C ou C
Lors de l'exécution d'un programme, il est souvent nécessaire de déterminer si l'entrée standard (stdin ) est connecté à un terminal ou à une canalisation. Cette distinction est cruciale pour comprendre le type d'entrée que le programme reçoit et ajuster le comportement en conséquence.
Analyse du problème
Comme observé, "python" se comporte différemment selon que il est appelé depuis un terminal ou via un tube. Ceci indique que le programme détecte la présence ou l'absence d'une connexion de terminal.
Solution de détection C ou C
En C ou C , la fonction isatty peut être utilisée pour déterminer si le descripteur de fichier spécifié fait référence à un terminal ou non. Il prend un descripteur de fichier comme argument, qui est généralement fileno(stdin) pour stdin.
Exemple de code
Voici un exemple d'utilisation d'isatty en C ou C :
#include <stdio.h> #include <io.h> // For _isatty and _fileno on Windows int main() { if (isatty(fileno(stdin))) { printf("stdin is a terminal\n"); } else { printf("stdin is a file or a pipe\n"); } return 0; }
Sous Windows, les fonctions isatty et fileno sont préfixées par des traits de soulignement, donc le code devient :
#include <stdio.h> #include <io.h> int main() { if (_isatty(_fileno(stdin))) { printf("stdin is a terminal\n"); } else { printf("stdin is a file or a pipe\n"); } return 0; }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!