Bonjour,
Peut-on faire un system("pause") sous Unix ? Je sais que ça fonctionne sous Windows (Dev).
Mais l'équivalence sous Unix, quelle est-elle ?
Bonjour,
Peut-on faire un system("pause") sous Unix ? Je sais que ça fonctionne sous Windows (Dev).
Mais l'équivalence sous Unix, quelle est-elle ?
system("pause") ne fonctionne pas sous Unix.
Si on suppose que le système fonctionne sous un shell Posix ou sur Bash (tous les linux déjà), on peut faire system("read") pour obtenir un effet similaire.
Problème: "read" n'est pas reconnu par le shell C (shell par défaut de FreeBSD par exemple).
Cependant, d'après la page man sous Linux, system() appelle /bin/sh, donc un shell Bourne a priori... Donc ça me paraît être une bonne supposition que system("read") fonctionnera dans 99% des cas sous Unix, sans que je puisse cependant te le certifier.
Néanmoins, je pense que le system("pause") (qui sert à éviter la fermeture prématurée de la fenêtre sous Windows) n'est qu'une solution de facilité. Il vaudrait mieux coder soi-même la fonction en lisant getchar() jusqu'à EOF ou \n.
Hello
Encore plus simple : il suffit de faire un fgets de l'entree standard...![]()
Bonjour,
Voici une méthode portable en deux lignes :Envoyé par Anomaly
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 puts ("Appuyez sur [enter] pour quitter...\n"); getchar ();
C'est portable mais dangereux dans le sens où le programme attend la touche entrée...Voici une méthode portable en deux lignes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 puts ("Appuyez sur [enter] pour quitter...\n"); getchar ();
Si tu tapes "bonjour" et tu tapes entrée, getchar va prendre le b et attendre il restera onjour pour un get/scanf ulterieur...
Pas forcèment génial...
Me semble mieux....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 printf("Pause!!!!\n"); //on attend un '\n' while(getchar()!=(int) '\n') ;
Biensûr si c'est juste pour garder la fenêtre ouverte, c'est une autre discussion, ta solution suffit...
Jc
Quelle est l'utilité de faire un system("pause") sous Unix? Je ne l'utilise que parce que je suis sous Dev-Cpp...
system("pause") ne fonctionne pas sous Unix.
Si, tu as dis quelque chose: Tu as demandé quelle était l'utilité d'attendre la pression d'une touche (ou de enter) avant de terminer le programme, sous Unix.
Et j'appuie ta question : Est-ce que les terminaux se ferment automatiquement sous Unix comme en Win32 console ? (Enfin, ça doit dépendre du WindowManager... On va dire... Sur KDE et WindowMaker ?)
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Sous linux si tu lances un programme que console a partir de l'interface graphique, aucun terminal ne s'ouvre... Si tu mets en place un systeme de lecture de l'entree standard, ton programme ne recevra rien du tout puisqu'il ne recuperera jamais ce que l'utilisateur a taper... Mettre un getchar provoque donc un programme qui boucle, il faudra faire un kill pour le terminer...Est-ce que les terminaux se ferment automatiquement sous Unix comme en Win32 console ? (Enfin, ça doit dépendre du WindowManager... On va dire... Sur KDE et WindowMaker ?)
Si tu es dans un terminal, c'est comme sous windows, le programme se termine et la fenetre ne se ferme pas...
Lorsque je programmais sous windows (ca fait longtemps), il y avait une option sous VC (et je crois dev) qui permettait de dire "ne ferme pas la fenetre lorsque le programme est lance"... Encore mieux, ouvrez simplement une invite de commande et allez dans le repertoire ou se trouve votre programme, en executant le programme a partir de la, vous n'aurez plus ce probleme de fenetre qui se ferme...
Je laisse aux experts de Linux et Windows faire les precisions necessaires...
Jc
Merci.
En fait, je pensais surtout aux fonctions comme la case à cocher "open in terminal" des raccourcis proposés par KDE...
Pour WindowMaker, j'ai ma réponse: Un des raccourcis du menu permet de lancer "top" dans un xterm; quand on quitte top, le terminal se ferme.
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Partager