CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[C]Event qui interromp scanf?

Malysz
Malysz
Niveau 6
26 novembre 2012 à 09:47:36

Salut, je suis à la recherche d'une manière d'interrompre un scanf ou un fgets.

Par exemple, on a une variable globale A = 0.

J'ai un premier processus, au sein duquel j'ai un scanf(), et imaginons que dans ce processus, l'utilisateur attend en regardant l'écran et en réfléchissant à ce qu'il va taper au clavier (donc on est pas sorti du scanf).

Maintenant, on a un second processus, qui pour une raison ou une autre, assigne la valeur 1 à A. A = 1.

Imaginons que dès lors, il est impératif que l'utilisateur de l'autre processus soit informé de ce changement. Or, comme il est en train de réfléchir à ce qu'il va taper dans la console et qu'on est coincé dans le scanf, je ne sais pas comment faire.

J'aimerais pouvoir faire une fonction insererTexte qui ressemble à scanf ou fgets mais avec la condition que dès que A!=0 , elle doit stopper et renvoyer NULL ou autre chose de convenu.

Des suggestions?

Merci

Djidane_666
Djidane_666
Niveau 10
26 novembre 2012 à 10:09:08

Pas très bien compris. Tu veux que l'utilisateur ai une limite de temps pour taper son nombre?
Sinon, if...else.
if (A != 0) {blablabla;} else {blablabla;}
Tu test A après qu'il ai tapé.
Mais si c'est pour qu'il soit finalement obligé d'être à 1 j'vois pas trop l'intérêt d'avoir l'avis de l'utilisateur. :(
(Enfin faut voir ce que tu veux faire exactement parce que ça me semble un peu trop floue là)

Malysz
Malysz
Niveau 6
26 novembre 2012 à 10:19:19

En fait, imagine que A soit une variable qui dit si il y a un incendie dans la maison de l'utilisateur. Si A = 0, pas d'incendie, si A = 1, incendie.

Quant l'utilisateur comme à utiliser le programme, qui lui demande d'insérer du texte, il n'y a pas d'incendie.
Il se trouve donc face à la console qui écrit, disons :
"Veuillez insérer votre texte : "

Alors qu'il réfléchit à ce qu'il va écrire, la variable A se met à 1 à cause (ou grâce) à un autre programme. Il faudrait alors que l'utilisateur, qui n'a pas fini à écrire sont texte, soit immédiatement averti que A est passé à 1, et donc qu'il y a un incendie.

Djidane_666
Djidane_666
Niveau 10
26 novembre 2012 à 10:24:50

Ah ok. Un processus parallèle donc.
Que je sache tu ne peux pas faire ça. Du moins pas "simplement".

Je préfère laisser la main là à quelqu'un de plus compétent. :x

Malysz
Malysz
Niveau 6
26 novembre 2012 à 10:30:40

Ok, merci. Mais ça doit bien exister, scanf, dans son code source, doit bien avoir une boucle, et cette boucle doit bien avoir une condition.

tbop2
tbop2
Niveau 10
26 novembre 2012 à 10:45:57

Si j'ai bien compris la question normalement celle-ci doit se resoudre par la creation d'un petit Thread timer qui ecrira dans la sortie standard au bout d'une seconde tout simplement.

Djidane_666
Djidane_666
Niveau 10
26 novembre 2012 à 11:16:44

Dis pas ça comme si c'était simple tbop2. :snif:
J'en ai bavé pour comprendre les "thread"...

tbop2
tbop2
Niveau 10
26 novembre 2012 à 11:52:49

Ya threading et threading Djidane... ici c'est tout con... il me semble.

Pseudo supprimé
Pseudo supprimé 26 novembre 2012 à 14:24:20

http://www.kernel.org/doc/man-pages/online/pages/man2/alarm.2.html
http://www.kernel.org/doc/man-pages/online/pages/man2/sigaction.2.html

Malysz
Malysz
Niveau 6
26 novembre 2012 à 15:30:41

Je vais voir tout ça et je reviendrai dire si j'ai pu le mettre en oeuvre, merci.

godrik
godrik
Niveau 30
26 novembre 2012 à 19:07:39

elite a raison, les signaux unix debloquent les I/Os

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Internet
  • Macintosh
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment