Signal ctrl-D

Signal ctrl-D - C - Programmation

Marsh Posté le 10-01-2005 à 12:42:09    

Salut tout le monde,
 
J'aimerais savoir comment je peux faire dans un programmes pour annuler le signal CTRL-D ou au moins faire en sorte d'executer une dernierre instructions certaines personne m'on dit que c t pas possible mais bon je sais que c possible rien qu'a voir emacs par example. Et plutot que chercher dans les sources d'emacs je m'adresse a vous qui avais peut etre la solution.
 
Merci de toutes vos reponses.


---------------
  ____
Reply

Marsh Posté le 10-01-2005 à 12:42:09   

Reply

Marsh Posté le 10-01-2005 à 13:39:00    

ok g trouve atexit permet de lancer une dernierre fonctions avant de quitter


---------------
  ____
Reply

Marsh Posté le 10-01-2005 à 13:39:20    

mais pour l'annuler completement???


---------------
  ____
Reply

Marsh Posté le 10-01-2005 à 14:28:04    

c'est dans quel contexte ?
 
sinon un truc dans le genre à adapter peut-être
 

Code :
  1. if(feof(stdin))
  2.    clearerr(stdin);


Message édité par push le 10-01-2005 à 14:28:23
Reply

Marsh Posté le 10-01-2005 à 15:43:51    

ON A DIT 15 FOIS CES DERNIERS JOURS QUE CTRL-D N'EST PAS UN SIGNAL ! Ta question n'a aucun sens. Tu n'as pas compris ce que fais Ctrl-d.
 
Contrairement à un signal, tu ne reçois pas un Ctrl-d comme ça, de manière asynchrone. Tu rencontres simplement un Ctrl-d (enfin le EOF qui est envoyé pas Ctrl-d) à la fin de l'input, quand tu traites un flux d'entrée. Donc si tu veux faire quelque chose en réponse à un Ctrl-d, c'est très simple : tu ajoutes du code après ta boucle de lecture.


Message édité par matafan le 10-01-2005 à 15:44:22
Reply

Marsh Posté le 10-01-2005 à 15:49:51    

matafan a écrit :

ON A DIT 15 FOIS CES DERNIERS JOURS QUE CTRL-D N'EST PAS UN SIGNAL !


bah sur un terminal unix, le shell sous jacent envoie le signal INTerrupt sur reception d'un ctrl-c, et un signal TERMinate sur reception d'un ctrl-d.
 
C'EST DONC PAS LA PEINE D'ECRIRE EN GRAS POUR RACONTER DES CONNERIES  :o  
 
 
cf signal.h, etc


Message édité par schnapsmann le 10-01-2005 à 15:53:49

---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
Reply

Marsh Posté le 10-01-2005 à 16:16:55    

C'est compètement faux. Revise tes notions et laisse les grands écrire en gras.
 
Edit : Ah illumination, je crois que je viens de comprendre ce que tu voulais (peut-être) dire. Si tu lances ton appli en background, et que tu termines le shell qui a lancé l'appli avec Ctrl-D, alors SIGHUP (pas SIGTERM) est envoyé à ton appli, et l'action par defaut de SIGHUP et de terminer le programme. Oui. Mais le SIGHUP n'a rien à voir avec le Ctrl-D. C'est simplement que le shell decide de quitter s'il voit un EOF en début de ligne. Et comme toujours quand une application termine, un SIGHUP et envoyé à chacun des fils.


Message édité par matafan le 10-01-2005 à 16:38:44
Reply

Marsh Posté le 10-01-2005 à 17:30:48    

non en fait je sais bien que ctrl-d envoie un EOF seulement je voudrais que ctrl-d n'envoie rien comme le fait emacs dans emacs le ctrl-d est annuler completement.
ET G JAMAIS DIT SUE C T UN SIGNAL


---------------
  ____
Reply

Marsh Posté le 10-01-2005 à 17:58:08    

> aimerais savoir comment je peux faire dans un programmes
> pour annuler le signal CTRL-D ou au moins faire en sorte
               ^^^^^^^^^^^^^^^^^
 
Lol minimoke !

Reply

Marsh Posté le 10-01-2005 à 18:10:19    

fautes de frappes car je sais que c pas un signal


---------------
  ____
Reply

Marsh Posté le 10-01-2005 à 18:10:19   

Reply

Marsh Posté le 10-01-2005 à 18:30:44    

Et dans le sujet, aussi une faute de frappe ? :)
Allez j'arrete de t'embeter hihi.

Reply

Marsh Posté le 11-01-2005 à 17:28:07    

matafan a écrit :

C'est compètement faux. Revise tes notions et laisse les grands écrire en gras.
 
Edit : Ah illumination, je crois que je viens de comprendre ce que tu voulais (peut-être) dire. Si tu lances ton appli en background, et que tu termines le shell qui a lancé l'appli avec Ctrl-D, alors SIGHUP (pas SIGTERM) est envoyé à ton appli, et l'action par defaut de SIGHUP et de terminer le programme. Oui. Mais le SIGHUP n'a rien à voir avec le Ctrl-D. C'est simplement que le shell decide de quitter s'il voit un EOF en début de ligne. Et comme toujours quand une application termine, un SIGHUP et envoyé à chacun des fils.


Si tu envoies un charactère spécial "CTRL-C" sur l'entrée standard d'un process, rien ne se passe.
C'est le shell, qui avec un fils lancé en "foreground" sans redirection de  l'entrée standard, intercepte les "CTRL-C" et envoie un signal INTerrupt au processus fils en question.

minimoke a écrit :

non en fait je sais bien que ctrl-d envoie un EOF seulement je voudrais que ctrl-d n'envoie rien comme le fait emacs dans emacs le ctrl-d est annuler completement.
ET G JAMAIS DIT SUE C T UN SIGNAL


 

minimoke a écrit :

Salut tout le monde,
 
J'aimerais savoir comment je peux faire dans un programmes pour annuler le signal CTRL-D ou au moins faire en sorte d'executer une dernierre instructions certaines personne m'on dit que c t pas possible mais bon je sais que c possible rien qu'a voir emacs par example. Et plutot que chercher dans les sources d'emacs je m'adresse a vous qui avais peut etre la solution.
 
Merci de toutes vos reponses.


faudrais savoir ce que tu veux dans ce cas


Message édité par schnapsmann le 11-01-2005 à 17:28:46

---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed