begin process at 2012 05 29 03:40:45
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

getchar non bloquant !!!


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

getchar non bloquant !!!

dimanche 2 février 2003 à 14:51:36 | getchar non bloquant !!!

MasterNKZ

Salut tout le monde,

Je programme en C sous linux, et je voudrai savoir si il existe une astuce pour rendre le getchar non bloquant, ou existe t-il une fonction similaire a getchar mais non bloquant.
j'ai une boucle de ce genre:

do{
c=getchar();
/*
series d'actions
*/
while(c!='q');

le probleme c ke arrivé à la ligne du getchar le prog s'y arrete et attend ke j'appuie sur une touche et moi je voudrai que si je tape rien il continue, parce ke dans cet exemple c comme si je faisais tourner le prog moi meme en appuyant sur une touche (differente de 'q' bien sur), c comme si ct du pas a pas, donc si vous pouviez m'aider.

Niko
dimanche 2 février 2003 à 15:02:41 | Re : getchar non bloquant !!!

trinitacs





-------------------------------
Réponse au message :
En fait tu veux savoir si la touche q a été pressé. Le gethar peut être non bloquant si le buffer est déjà plein. Mais ce n'est pas une solution car j'ai l'impression que tu désire détecter si la touche q a été pressée.

Pour cela utilise une bibliothèque ou les interuption du bios.
En tout cas je ne connais pas de fonction ANSI/ISO du C/C++ qui te signale qu'elle a été la touche pressé.

Sinon tu peux chercher dans le fichier équivalant à conio qui fourni getch();

-------------------------------

> Salut tout le monde,
>
> Je programme en C sous linux, et je voudrai savoir si il existe une astuce pour rendre le getchar non bloquant, ou existe t-il une fonction similaire a getchar mais non bloquant.
> j'ai une boucle de ce genre:
>
> do{
> c=getchar();
> /*
> series d'actions
> */
> while(c!='q');
>
> le probleme c ke arrivé à la ligne du getchar le prog s'y arrete et attend ke j'appuie sur une touche et moi je voudrai que si je tape rien il continue, parce ke dans cet exemple c comme si je faisais tourner le prog moi meme en appuyant sur une touche (differente de 'q' bien sur), c comme si ct du pas a pas, donc si vous pouviez m'aider.
>
> Niko
dimanche 2 février 2003 à 17:29:10 | Re : getchar non bloquant !!!

cmarsc

salut,

getch(); voir dans <ncurses.h>
si c'est une fonction comme kbhit il faudrait l'écrire




-------------------------------
Réponse au message :
-------------------------------

>
>
>
>
> -------------------------------
> Réponse au message :
> En fait tu veux savoir si la touche q a été pressé. Le gethar peut être non bloquant si le buffer est déjà plein. Mais ce n'est pas une solution car j'ai l'impression que tu désire détecter si la touche q a été pressée.
>
> Pour cela utilise une bibliothèque ou les interuption du bios.
> En tout cas je ne connais pas de fonction ANSI/ISO du C/C++ qui te signale qu'elle a été la touche pressé.
>
> Sinon tu peux chercher dans le fichier équivalant à conio qui fourni getch();
>
> -------------------------------
>
> > Salut tout le monde,
> >
> > Je programme en C sous linux, et je voudrai savoir si il existe une astuce pour rendre le getchar non bloquant, ou existe t-il une fonction similaire a getchar mais non bloquant.
> > j'ai une boucle de ce genre:
> >
> > do{
> > c=getchar();
> > /*
> > series d'actions
> > */
> > while(c!='q');
> >
> > le probleme c ke arrivé à la ligne du getchar le prog s'y arrete et attend ke j'appuie sur une touche et moi je voudrai que si je tape rien il continue, parce ke dans cet exemple c comme si je faisais tourner le prog moi meme en appuyant sur une touche (differente de 'q' bien sur), c comme si ct du pas a pas, donc si vous pouviez m'aider.
> >
> > Niko
>
dimanche 2 février 2003 à 20:45:39 | Re : getchar non bloquant !!!

MasterNKZ

j'ai deja teste tout ce ki pouvait ressembler a getchar de pres ou de loin dans <ncurses.h> et rien de convaincant.
cmarsc, je n'ai pas compris ta deuxieme phrase, je ne sais pas ce ke c ke kbhit...

Niko


-------------------------------
Réponse au message :
-------------------------------

> salut,
>
> getch(); voir dans <ncurses.h>
> si c'est une fonction comme kbhit il faudrait l'écrire
>
>
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> >
> >
> >
> >
> > -------------------------------
> > Réponse au message :
> > En fait tu veux savoir si la touche q a été pressé. Le gethar peut être non bloquant si le buffer est déjà plein. Mais ce n'est pas une solution car j'ai l'impression que tu désire détecter si la touche q a été pressée.
> >
> > Pour cela utilise une bibliothèque ou les interuption du bios.
> > En tout cas je ne connais pas de fonction ANSI/ISO du C/C++ qui te signale qu'elle a été la touche pressé.
> >
> > Sinon tu peux chercher dans le fichier équivalant à conio qui fourni getch();
> >
> > -------------------------------
> >
> > > Salut tout le monde,
> > >
> > > Je programme en C sous linux, et je voudrai savoir si il existe une astuce pour rendre le getchar non bloquant, ou existe t-il une fonction similaire a getchar mais non bloquant.
> > > j'ai une boucle de ce genre:
> > >
> > > do{
> > > c=getchar();
> > > /*
> > > series d'actions
> > > */
> > > while(c!='q');
> > >
> > > le probleme c ke arrivé à la ligne du getchar le prog s'y arrete et attend ke j'appuie sur une touche et moi je voudrai que si je tape rien il continue, parce ke dans cet exemple c comme si je faisais tourner le prog moi meme en appuyant sur une touche (differente de 'q' bien sur), c comme si ct du pas a pas, donc si vous pouviez m'aider.
> > >
> > > Niko
> >
>
lundi 3 février 2003 à 13:24:56 | Re : getchar non bloquant !!!

cmarsc

kbhit() <conio.h> (sous dos borland bien souvent) est une fonction qui detecte si une touche a été frappée, elle fait une boucle sans fin et s'arrecte une fois que l'on presse n'importe quelle touche, malheuresement est n'existe pas sous linux. il faut l'écrire nous même :-(


-------------------------------
Réponse au message :
-------------------------------

> j'ai deja teste tout ce ki pouvait ressembler a getchar de pres ou de loin dans <ncurses.h> et rien de convaincant.
> cmarsc, je n'ai pas compris ta deuxieme phrase, je ne sais pas ce ke c ke kbhit...
>
> Niko
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > salut,
> >
> > getch(); voir dans <ncurses.h>
> > si c'est une fonction comme kbhit il faudrait l'écrire
> >
> >
> >
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > >
> > >
> > >
> > >
> > > -------------------------------
> > > Réponse au message :
> > > En fait tu veux savoir si la touche q a été pressé. Le gethar peut être non bloquant si le buffer est déjà plein. Mais ce n'est pas une solution car j'ai l'impression que tu désire détecter si la touche q a été pressée.
> > >
> > > Pour cela utilise une bibliothèque ou les interuption du bios.
> > > En tout cas je ne connais pas de fonction ANSI/ISO du C/C++ qui te signale qu'elle a été la touche pressé.
> > >
> > > Sinon tu peux chercher dans le fichier équivalant à conio qui fourni getch();
> > >
> > > -------------------------------
> > >
> > > > Salut tout le monde,
> > > >
> > > > Je programme en C sous linux, et je voudrai savoir si il existe une astuce pour rendre le getchar non bloquant, ou existe t-il une fonction similaire a getchar mais non bloquant.
> > > > j'ai une boucle de ce genre:
> > > >
> > > > do{
> > > > c=getchar();
> > > > /*
> > > > series d'actions
> > > > */
> > > > while(c!='q');
> > > >
> > > > le probleme c ke arrivé à la ligne du getchar le prog s'y arrete et attend ke j'appuie sur une touche et moi je voudrai que si je tape rien il continue, parce ke dans cet exemple c comme si je faisais tourner le prog moi meme en appuyant sur une touche (differente de 'q' bien sur), c comme si ct du pas a pas, donc si vous pouviez m'aider.
> > > >
> > > > Niko
> > >
> >
>
lundi 3 février 2003 à 13:29:11 | Re : getchar non bloquant !!!

cmarsc

getch est dans <curses.h> et non <ncurses.h>



-------------------------------
Réponse au message :
-------------------------------

> kbhit() <conio.h> (sous dos borland bien souvent) est une fonction qui detecte si une touche a été frappée, elle fait une boucle sans fin et s'arrecte une fois que l'on presse n'importe quelle touche, malheuresement est n'existe pas sous linux. il faut l'écrire nous même :-(
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > j'ai deja teste tout ce ki pouvait ressembler a getchar de pres ou de loin dans <ncurses.h> et rien de convaincant.
> > cmarsc, je n'ai pas compris ta deuxieme phrase, je ne sais pas ce ke c ke kbhit...
> >
> > Niko
> >
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > salut,
> > >
> > > getch(); voir dans <ncurses.h>
> > > si c'est une fonction comme kbhit il faudrait l'écrire
> > >
> > >
> > >
> > >
> > > -------------------------------
> > > Réponse au message :
> > > -------------------------------
> > >
> > > >
> > > >
> > > >
> > > >
> > > > -------------------------------
> > > > Réponse au message :
> > > > En fait tu veux savoir si la touche q a été pressé. Le gethar peut être non bloquant si le buffer est déjà plein. Mais ce n'est pas une solution car j'ai l'impression que tu désire détecter si la touche q a été pressée.
> > > >
> > > > Pour cela utilise une bibliothèque ou les interuption du bios.
> > > > En tout cas je ne connais pas de fonction ANSI/ISO du C/C++ qui te signale qu'elle a été la touche pressé.
> > > >
> > > > Sinon tu peux chercher dans le fichier équivalant à conio qui fourni getch();
> > > >
> > > > -------------------------------
> > > >
> > > > > Salut tout le monde,
> > > > >
> > > > > Je programme en C sous linux, et je voudrai savoir si il existe une astuce pour rendre le getchar non bloquant, ou existe t-il une fonction similaire a getchar mais non bloquant.
> > > > > j'ai une boucle de ce genre:
> > > > >
> > > > > do{
> > > > > c=getchar();
> > > > > /*
> > > > > series d'actions
> > > > > */
> > > > > while(c!='q');
> > > > >
> > > > > le probleme c ke arrivé à la ligne du getchar le prog s'y arrete et attend ke j'appuie sur une touche et moi je voudrai que si je tape rien il continue, parce ke dans cet exemple c comme si je faisais tourner le prog moi meme en appuyant sur une touche (differente de 'q' bien sur), c comme si ct du pas a pas, donc si vous pouviez m'aider.
> > > > >
> > > > > Niko
> > > >
> > >
> >
>
lundi 3 février 2003 à 23:07:00 | Re : getchar non bloquant !!!

MasterNKZ

c bon g trouvé une astuce en mtapant les man en anglais, je met juste halfdelay(1) et j'utilise wgetch
halfdelay permet de parametrer le tps d'attente en dixieme de seconde pour wgetch(et autres cousins de wgetch).
Niko


-------------------------------
Réponse au message :
-------------------------------

> getch est dans <curses.h> et non <ncurses.h>
>
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > kbhit() <conio.h> (sous dos borland bien souvent) est une fonction qui detecte si une touche a été frappée, elle fait une boucle sans fin et s'arrecte une fois que l'on presse n'importe quelle touche, malheuresement est n'existe pas sous linux. il faut l'écrire nous même :-(
> >
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > j'ai deja teste tout ce ki pouvait ressembler a getchar de pres ou de loin dans <ncurses.h> et rien de convaincant.
> > > cmarsc, je n'ai pas compris ta deuxieme phrase, je ne sais pas ce ke c ke kbhit...
> > >
> > > Niko
> > >
> > >
> > > -------------------------------
> > > Réponse au message :
> > > -------------------------------
> > >
> > > > salut,
> > > >
> > > > getch(); voir dans <ncurses.h>
> > > > si c'est une fonction comme kbhit il faudrait l'écrire
> > > >
> > > >
> > > >
> > > >
> > > > -------------------------------
> > > > Réponse au message :
> > > > -------------------------------
> > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > > -------------------------------
> > > > > Réponse au message :
> > > > > En fait tu veux savoir si la touche q a été pressé. Le gethar peut être non bloquant si le buffer est déjà plein. Mais ce n'est pas une solution car j'ai l'impression que tu désire détecter si la touche q a été pressée.
> > > > >
> > > > > Pour cela utilise une bibliothèque ou les interuption du bios.
> > > > > En tout cas je ne connais pas de fonction ANSI/ISO du C/C++ qui te signale qu'elle a été la touche pressé.
> > > > >
> > > > > Sinon tu peux chercher dans le fichier équivalant à conio qui fourni getch();
> > > > >
> > > > > -------------------------------
> > > > >
> > > > > > Salut tout le monde,
> > > > > >
> > > > > > Je programme en C sous linux, et je voudrai savoir si il existe une astuce pour rendre le getchar non bloquant, ou existe t-il une fonction similaire a getchar mais non bloquant.
> > > > > > j'ai une boucle de ce genre:
> > > > > >
> > > > > > do{
> > > > > > c=getchar();
> > > > > > /*
> > > > > > series d'actions
> > > > > > */
> > > > > > while(c!='q');
> > > > > >
> > > > > > le probleme c ke arrivé à la ligne du getchar le prog s'y arrete et attend ke j'appuie sur une touche et moi je voudrai que si je tape rien il continue, parce ke dans cet exemple c comme si je faisais tourner le prog moi meme en appuyant sur une touche (differente de 'q' bien sur), c comme si ct du pas a pas, donc si vous pouviez m'aider.
> > > > > >
> > > > > > Niko
> > > > >
> > > >
> > >
> >
>
vendredi 19 février 2010 à 00:54:59 | Re : getchar non bloquant !!!

FlorimondH

[Déterrage]
Merci t'as solution m'a aidé. Cependant, 'haldelay(1)', au lieu de rendre getch totalement non bloquant, introduit un dixième de seconde de temporisation alors que l'on pourrait utiliser simplement 'nodelay'

exemple:
/* curses.h définit TRUE = 1 et FALSE = 0 */
nodelay (stdscr, TRUE);

-> http://linux.die.net/man/3/halfdelay

a+ collègue manchot ;)


Cette discussion est classée dans : ke, prog, existe, getchar, bloquant


Répondre à ce message

Sujets en rapport avec ce message

petite question mais ke j'ai besoin [ par superoi ] bon \jour je sais que c'est con mais j'ai vraiment besoin de savoir c'est pour savoir si ca existe en c ca : long (*f)(void)(char *str); et est ce utiliser un Timer [ par melkiorlenecrarque ] hello! jutilise VC++ 6 et et j'essai de transcrire mon programme "combat warhammer" pour windowsvoila mon pb:mon prog en appuyant sur un boutton execu mes questions sans réponses [ par leprov ] salut a tous.apres avoir posté ces differentes kestion et ne pas y avoir eu de reponses (maintenant elles sont a perpetes ds la liste des topics, dc j faire un prog msn [ par fenders ] salut tt le monde!!En fait je voudrais en svoir plus en matiere de programmation notament pr fr des prog pr msn.Est ce ke kelkun pe me dire kl langage port ftp [ par nickelbackes ] Bonjour, en fait j'ai fait un petit prog qui me permet de transferer des fichiers d'un ordi vers mon serveur ftp, tous marche nikel,le seul probleme c Existe t il un prog qui efface automatiquement un fichier selon des criter defini [ par faznet ] Mon cas est desespérévoila j ai besoin d un prog ou d une source ou n 'importemais d' une solution.En effet, j ai besoin d efaccer un ou des fichiers kestion sur updateresource?? [ par youpiyoyo ] j'ai un petit problemeje n'ai pas pu faire un updateresource a partir de mon prog ki etait entrain de tourner..alors je me suis di faisons une dll, je pbme avec dev-c++ [ par imothepe_33 ] Au fait je suis débutant et mon premier prog ke j'ai écrit est le fameux "hello world". Ce ki me tracace c ke lors de l'exécution(en mode console),la Variables, je comprends rien! [ par StevenJLMunn ] J`ecris avec un clavier americain donc je ne peut pas ecrire avec les acents.Je fais un prog pour les codes serie (je pense ke tout le monde siat ce k systray [ par leprov ] bonjour a tous.apres avoir arpenté les sources, j'ai trouvé pas mal de sources pour mettre un prog ds la systray, mais jai pas mal de mal a capter com


Nos sponsors


Sondage...

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,671 sec (3)

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