begin process at 2012 05 29 15:09:19
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

Pause sous UNIX


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Pause sous UNIX

mercredi 9 août 2006 à 10:03:46 | Pause sous UNIX

Polack77

Bonjours,
Bon tout d'abor je tiens à dire que j'ai lut ce qui s'est dit sur le sujet dans le forum mais ce que je veut n'est pas dispo (ce n'est pas une pause d'un certain temps que je veut).
Voila mon problème :
Mon programme s'exécute en mode texte et des argument sont obligatoire. Si on lance mon programme sans argument j'affiche la liste des arguments utilisable, problème ce texte fais plus de deux page d'affichage donc pour permettre la lecture de ce texte je souhaite faire un équivalent de « system("PAUSE"); ». Pour le moment je fais cas :
printf("Appuyez sur 'Entrée' pour continuer.");
getchar();
Mais le fonctionnement ne me conviens pas vraiment car si mon utilisateur presse une autre touche que entrée mes "pause" suivante sont passée (j'ai un très vieux compilo, connais même pas le type bool, je sais pas si cas à un rapport mais bon je l'indique quand même). Donc voila je cherche soit une équivalence à system("PAUSE"); soit une fonction qui récupère 1 carac saisi au clavier (et qui ne l'affiche pas de préférence).
PS : l'insertion de "conio.h" ne fonctionne pas sur mon compilo (en même temps pour une me*de qui ne connais pas les bool cas ne m'étonne pas).

Merci

------------------------------------------------------------------------------
Ce soir dans "triste monde tragique" :

Des vers qui mangent les programmeurs !
Des virus sorte des ordinateurs et attaque des gents !

------------------------------------------------------------------------------
mercredi 9 août 2006 à 10:27:58 | Re : Pause sous UNIX

darunia

Le type bool n'existe pas en C, utilise int.
Sinon il arrive que getchar choppe 2 caracteres à la suite (le caractere + retour chariot).
Ce m'est deja arrivé mais je me souvient pu trop ce que j'avais fait ...
Peut etre 2 getchar à la suite, ou un fseek sur stdin ???

D@runia
mercredi 9 août 2006 à 10:30:26 | Re : Pause sous UNIX

vinc1008881

salut, je suis sur un systeme linux également.

1) le type bool existe seulement en C++, pas en C, tu peux faire un typedef char bool;
2) getch () marche tres bien sur mon compilo
3) conio.h n'existe pas sous linux (UNIX), à la place il y a le ncurses.h mais elle sont plus chiantes à utiliser.
mercredi 9 août 2006 à 10:35:52 | Re : Pause sous UNIX

vecchio56

Administrateur CodeS-SourceS
Et pourquoi ne peux tu pas utiliser system("pause");?

_____________________________________
Un éditeur de ressources gratuit pour Windows

mercredi 9 août 2006 à 10:44:14 | Re : Pause sous UNIX

Polack77

Pour le bool le problème est gérer (je ne savais pas que le bool n'existait que en C++ comme quoi on en apprend tout les jours) j'ai fais un short (c'est vrais qu'un char serais mieux je vais faire la modif)
getch() ne marche pas car conio.h n'existe pas (tout du moin à mon avie) heee, vinc1008881 pourais tu me dire quel include je dois mettre pour getch (ncurses.h peut être ???)
Je n'utilise pas system("pause"); car cas ne marche pas sur UNIX (à moin que je ne fasse erreur mais il ne me semble pas, de toute façon cas ne marche pas chez moi.)
darunia si je met 2 getchar(); à la suite et que mon utilisateur appie sur entrée dés la 1ér fos et que rien ne se passe il ne vas pas être contant et c'est mon chef qui utilisera ce code (et j'aime bien que mon chef soit contant )

------------------------------------------------------------------------------
Ce soir dans "triste monde tragique" :

Des vers qui mangent les programmeurs !
Des virus sorte des ordinateurs et attaque des gents !

------------------------------------------------------------------------------
mercredi 9 août 2006 à 10:56:10 | Re : Pause sous UNIX

vinc1008881

system ("pause"); c'est pour Win comme system ("commande MS-DOS");


mercredi 9 août 2006 à 10:57:26 | Re : Pause sous UNIX

vecchio56

Administrateur CodeS-SourceS
Je penseais que la commande pause existait sous UNIX. Dans ce cas ya pas une commande équivalente?

_____________________________________
Un éditeur de ressources gratuit pour Windows

mercredi 9 août 2006 à 10:57:27 | Re : Pause sous UNIX

darunia

#include <stdio.h>

D@runia
mercredi 9 août 2006 à 11:23:54 | Re : Pause sous UNIX

steve_clamage

Réponse acceptée !
Pas facile de s'en rendre compte mais la commande pause ne sert à rien, c'est pour ca qu'il n'y a pas d'équivalent sous unix.
getchar lit un caractere sur stdin, si tu appuies sur <enter> ca va lire le '\n', par contre si tu saisies d'autres caractères avant le <enter> getchar n'en lira qu'un et les autres resteront dans le flux et seront lu par le prochain getchar (ou autre fgets...).

On peut faire comme ca:
fputs("Appuyez sur 'Entrée' pour continuer.", stdout);
fflush(stdout); /* pour garantir l'affichage avant les saisies sur stdin */
/* pour lire les caracteres restant dans le flux */
{
int c;
while( (c = getchar()) != '\n' && c != EOF );
}
getchar();


Le seul inconvenient c'est que si le flux est vide alors il faudra appuyer 2 fois sur <enter>, en fait il faudrais prendre pour habitude de toujours lire ce qui est saisie. Ce probleme n'existe pas si on a bien compris comment fonctionnent les flux d'entrés, pour chaque saisie on peut lire avec fgets et continuer à lire tant que le '\n' n'est pas trouvé.
mercredi 9 août 2006 à 11:24:08 | Re : Pause sous UNIX

vinc1008881

aucune commande équivalente, mais quelqu'un a réussit à en bidouiller une...

#include <stdio.h>
#include <termios.h>

int l_getch ()
{
        static struct termios term, back;
        int ret=-1;

        tcgetattr (0, &term);       /* On recupere les info du terminal */
        memcpy (&back, &term, sizeof(term));

        term.c_lflag &= ~(ICANON|ECHO);    /* On modifie les options du terminal */
        term.c_cc[VTIME] = 0;       /* Temps d'attente infini */
        term.c_cc[VMIN]  = 1;       /* Nombre minimun de caractere */

        tcsetattr(0, TCSANOW, &term);   /* Modif des attribut de stdin */
        ret = getchar();                /* Attente d'un caractere */
        tcsetattr(0, TCSANOW, &back);   /* Restauration des attributs */

        return ret;
}

int main ()
{
l_getch (); /*   = system("pause");
}


et le lien original : [ Lien ]

il compile bien chez moi en tout cas Ubuntu Dapper drake et mandriva 2006, ce code devrait marcher pour tout systeme avec kernel linux.

1 2

Cette discussion est classée dans : texte, temps, unix, cas, pause


Répondre à ce message

Sujets en rapport avec ce message

faire une pause sous unix [ par fred23 ] Bonjour,Je suis sur une servuer unix qui ne connait pas la commande Sleep.Qui pourrait me dire comment faire une pause.?Merci. Flags de OnKeyDown [ par hilairenicolas ] Bonjour à tous, dans la méthode OnKeyDown (UINT nChar, UINT nRepCnt, UINT nFlags), je recois un caractère qui a une valeur de flags différente suiv fichiers texte (windows/unix) [ par Lapin0u ] Bonjour tout le monde,J'ai un petit problème qui me semble insoluble et j'ai besoin de vos lumières. Quelqu'un m'envoie un fichier texte avec un progr mettre en pause SDL_GetTicks [ par djipey ] Bonjour, voila je code un pong en SDL. Il contient plusieurs boucles, dont une trés grosse qui se répéte si l'utilisatuer perd et qu'il demande à rejo texture a partir d'un texte [ par scannerz ] Bonjour tout le monde... Je me suis lancé sur DirectX9 depuis quelques jours, et je suis déjà a la rue.... lol J'ai fait un petit code qui affich compteur en pause dans une plage de temps [ par kais52 ] Bonjour,Je pêche dans mon programme Wincc. Je souhaite incrémenter un compteur et lui faire une "pause" pendant une plage horaireSauriez vous m'aiguil Fichier Texte, Affichage et TEMPS RÉEL [ par proggen ] Bonjour, je veut coder un prog en temps réel. Celui-ci doit traiter des informations arrivant à chaque 0.25 secondes dans un fichier texte et ensuite Lecture de ligne dans un fichier texte sous windows et unix [ par moumouteb ] Bonjour, Je développe un code qui doit tourner sous Windows et UNIX. J'utilise la fonction getline() pour lire un fichier texte. Et bien sûr suivant Modification virgule fichier .txt [ par necromoine ] Bonjour, je souhaite faire un code qui permet de mettre un retour à la ligne apres chaque virgule d'un fichier texte, qui ressemblerait à : Contenu t Lire une matrice dans un fichier texte en mémorisant les chiffres dans un tableau [ par LaamZ ] Bonjour, J'aimerai savoir comment lire une matrice dans un fichier texte comme ceci: 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 1 1 1 1 1 1 1 1 1 3


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,842 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales