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

parallelisme et signaux

ohunshadok
ohunshadok
Niveau 10
19 janvier 2006 à 20:59:59

j´ai un petit problème pour comprendre comment gérer les signaux. je vois comment envoyer un signal a un processus (sous linux) avec kill(nomprocessus,type), mais je ne vois pas comment reperer un processus.

par exemple je peux recevoir 2 signaux n´importe quand.

en gros ca serait

if(jerecois)
{
switch(signal)
{

case A:
...break;
case B:
...break;
default :
...
}
}

mais je ne vois pas du tout comment faire pour le if(si je recois un signal)

quelqu´un peut m´aider please?

JeanYvesYves
JeanYvesYves
Niveau 10
20 janvier 2006 à 00:49:50

Hum, d´une maniere ou d´une autre, tu dois pouvoir récupérer le PID des processus.
Pour les fonctions dessus, de tete je ne sais pas, par contre, si tu regardes "signal.h" et sa documentation, tu trouveras ton bonheur.

En ce qui me concerne, je déteste la programmation qui utilise les signaux, je ne l´utilise pas. Le seul interet que j´y vois est de pouvoir killer un processus que je n´ai pas fait a partir d´un autre, chose que je ne trouve pas grandement intéressant (sous Linux, autant faire un kill -9 sous la console...)

Sinon, si tu fais de la programmation multiprocessus (et c´est toi qui a programmé chaque processus), utilise un pipe pour les échanges de données entre eux.
Voir meme, si tu pars en threading, utilise des variables partagées, protégées par des mutex.

godrik
godrik
Niveau 30
20 janvier 2006 à 12:08:01

la fonction signal (man 2 signal) te permet de choisir quel est la fonction qui sera appelé par le noyau quand ton processus recevra un signal (ton programme sera préempté)
Il faut penser (dans cette fonction) a désactiver la reception de signal (sinon, on peut avoir des signaux réentrant. Et ca c´est le mal)
Une grande question reste: dans un proramme multi-threadé, si je recois un signal; un thread est il préempté ? le quel ? est ce que tous les threads sont préempté ? mystère et boule de gomme....

dnob700
dnob700
Niveau 10
20 janvier 2006 à 19:34:08

Il faut savoir que les signaux sont considéré par beaucoup comme une interface complétement obsolète et qui ne devrait pas exister dans un OS moderne (bon, comme ont n´utilise pas d´OS moderne, ça résoud le problème).

Pour le "préemptage" j´aurais tendance à dire que dans tout les cas un nouveau thread est crée pour gérer le signal, car tu ne peut pas interompre un fil d´exécution. Si je me trompe c´est probablement le thread qui a appelésignal qui sers à sa gestion (oui, mais si le thread n´existe plus ? (je dirais que le signal n´est plus recu...)).

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