begin process at 2012 05 27 17:57:36
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Applications Linux

 > PROPAGER UN SIGNAL SIGINT DANS UNE CLASSE C++ (LINUX)

PROPAGER UN SIGNAL SIGINT DANS UNE CLASSE C++ (LINUX)


 Information sur la source

Note :
Aucune note
Catégorie :Applications Linux Classé sous :signal, linux, classe, c Niveau :Initié Date de création :26/10/2006 Vu / téléchargé :8 318 / 287

Auteur : sbnl31

Ecrire un message privé
Commentaire sur cette source (9)
Ajouter un commentaire et/ou une note

 Description

Ce programme permet d'intercepter un signal SIGINT et de le propager à une classe C++.
Cette action permet de quitter une boucle à partir de la séquence <CTRL>C et de sortir proprement.


 Conclusion

L'archive contient un projet créé à partir d'Eclipse 3.1.2 sous Fedora Core 5, un Makefile de base pour construire l'application et le source "main.cpp".

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  •   test_sigintcpp
    •   .settings
      • org.eclipse.cdt.managedbuilder.core.prefsTélécharger ce fichier [Réservé aux membres club]540 octets
    • .cdtbuildTélécharger ce fichier [Réservé aux membres club]2 881 octets
    • .cdtprojectTélécharger ce fichier [Réservé aux membres club]662 octets
    • .projectTélécharger ce fichier [Réservé aux membres club]511 octets
    • main.cppTélécharger ce fichier [Réservé aux membres club]Voir ce fichier2 135 octets
    • MakefileTélécharger ce fichier [Réservé aux membres club]91 octets

Télécharger le zip


 Sources de la même categorie

Source avec Zip TRAITEMENT D'IMAGE PGM par Jios
Source avec une capture COLORIMÈTRE NUMÉRIQUE LINUX par valchek
Source avec Zip TRAITEMENTS D'IMAGES AU FORMAT PGM AVEC LES ALGORITHMES DE C... par lemout
Source avec Zip ALGORITHME ACO INTERFACE GTK par RyBeN
Source avec Zip COMPRESSER SES SAUVEGARDES SMSBACKUPRESTORE (ANDROID) EN C A... par ThalLab

 Sources en rapport avec celle ci

Source avec Zip TRAITEMENT D'IMAGE PGM par Jios
Source avec une capture COLORIMÈTRE NUMÉRIQUE LINUX par valchek
Source avec Zip HEAPCOLLECTOR par troctsch
Source avec Zip CODE DE HUFFMAN par Ricky_MacElroy
Source avec Zip [C] FONCTION MSGBOX TOUTE SIMPLE POUR LINUX ! par ZedMaTrix

Commentaires et avis

Commentaire de Arnaud16022 le 29/10/2006 22:35:33

Aucun Dtor n'est appellé après un ctrl-c ? c'est tellement brute-force ?
Et je comprends pas bien ... pourquoi ne pas désallouer toutes tes ressources dans SignalHandler , et ensuite, à dieu vat ? vu que c'est la dernière fonction qui sera appellée ( apparement ... moi jdis ça ... )

Commentaire de sbnl31 le 02/11/2006 09:41:56

Le gestionnaire de signal par défaut stoppe brutalement ton programme. L'avantage de ton propre signal est de nettoyer, sauvegarder avant de sortir (sauvegardes de tes données dans l'application par exemple). Qui dit C++ dit objet, encapsulation et interface. On pourrait ainsi écrire un wrapper qui avertit une liste d'objet qu'un ^C a été envoyé à l'application sans se préoccuper de ce que chaque objet doit faire dans ce cas.  

Commentaire de Arnaud16022 le 02/11/2006 11:19:13

Je vois tout à fait l'intérêt de gérer ça, ça permet de faire comme Word qui quand il a été killé, te propose une backup.
Là où je coince, c'est là:
new_sa.sa_handler = TestSIGINT::sigint_handler;
On est bien d'accord que c'est celle ligne ci qui te permet de définir TestSIGINT::sigint_handler comme la fonction à appeller lorsqu'il y a une sigint (un callback, quoi) ?
Mais après tu as:
void TestSIGINT::sigint_handler(int signo)
{
//write(1, "<<CTRL+C>>\n", 11);
m_stopLoop = 1;
};
et SI JE COMPRENDS BIEN (rien n'est moins sûr), après ce callback, le prog est stoppé ? donc c'est ici et seulement ici qu'il faut désallouer, sauvegarder et tout et tout ? vu que la fonction TestSIGINT::loop() ne sera plus appellée ? ....

Commentaire de Arnaud16022 le 02/11/2006 11:20:01

hum dès que je reboote sous Nux je teste, ça me paraît vraiment trop chelou ton histoire ... d'un autre côté vu que tu as testé .. :/

Commentaire de sbnl31 le 02/11/2006 11:56:11

Mon gestionnaire de signal ne stoppe pas le programme, si tu commentes la ligne "m_stopLoop = 1;" et que tu recompiles, tu auras un ^C inactif.

Commentaire de Arnaud16022 le 02/11/2006 15:29:29

tu es en train de me dire que tu dis à l'OS "tkt je m'occupe de tout, si on tente de me killer laisse moi faire " ??? c'est pas méga dangereux ça ?? genre dans mon callback je fais rien du tout, ya de quoi embêter l'utilisateur ! je peux même plus faire ctrl alt suppr :/ ( ok, sous xp )

Commentaire de sbnl31 le 02/11/2006 16:05:15

Sous Unix, tu as toujours la possibilité d'effectuer un 'kill' sur ton processus et puis si ton code est correct, il doit sortir correctement.

Commentaire de Arnaud16022 le 02/11/2006 16:59:08

hum alors crtl-C et killer avec le gestionnaire de processus ( je parle sous unix ) c'est pas la mêm chose ? ça correspond aux différentes options de kill ( le programme ) c'est ça ?

Commentaire de sbnl31 le 02/11/2006 18:20:27

La commande 'kill -l' te donne la liste des signaux.
Pour tuer ton processus, 'kill -9 processus_number' envoie un SIGKILL.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Signal / Interrupt_handler sous linux [ par seblegaulois ] Salut,Je sais bien utiliser en c la fonction signal.J'essais de faire l'equivalent en C++ pour l'appel d'une methode d'une class.Je n'y arrive pas. Je fonction signal en C++ sous unix (g++) [ par seblegaulois ] Bonjour,En c, j'arrive à faire :void toto(int) {...}...signal(SIGUSR2,toto);Et en C++, je n'y arrive pas, j'ai fait :class toto {...void toto(int) { . probleme avec les sockets en linux :s [ par Hiperion ] bonjour, j'utilise un tutorial de bgnet pour apprendre la prog réseau en linux, mais la j'ai un prob.jcopie exactement squi est écrit dans le fichier, Programmation Linux [ par LordBob ] Bonjour a tous,voila je voudrais savoir si vous connaissier des sites qui parle de la programmation sur, et pour application Linux car ca m'interresse Trouver les instances d'une classe ??? [ par Arkko ] Salut ...Est-ce quelqu'un connais un moyen de trouver toute les instances d'une classe?Ex:class uneClasse{};uneClasse Allo;uneClasse KechosedOtre;pis Récupérer un évènement [ par darsh99 ] Bonjour,voilà j'ai créé une classe qui n'est dérivée de rien du tout, est-il possible de lui faire récupérer un évènement ?L'évènement étant généré pa Liste chainée d'objets de classes différentes [ par gillig ] Voici un problème auquel je ne trouve pas de réponse, enfin, rien d'efficace.J'ai une classe CDessin contenant une liste chaînée (CList) de pointeurs Envoi de classe avec send [ par piemur2000 ] Bonjour,Je voudrai envoyer une classe grace à un send.Par exemple cette classe :class Donnees{ int Type; int Taille; d Installation de Linux [ par khalidlyon ] Bonjour,Enfaite je viens d'acheter un portable, sur ce portable j'ai que windows XP, alors j'ai deux choses a demander si possible.1- Comment on fait Erreur de link en utilisant les templates [ par Wett ] Voila j'utilise VC++ 6 et j'ai créé une classe templates toute simple (en fait c une liste chainée :p), de la formedans le .h:template &lt;class T&gt;


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

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

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