• # logout

    Posté par  . Évalué à 4.

    faudrait voir si le fait de fermer le terminal par sa fenetre declenche ou pas l'execution du .logout dans lequel tu peux mettre les actions a faire quand tu fermes le bash.

  • # Re :

    Posté par  . Évalué à 2.

    Non le Logout n'est pas exécuté, même si on utilise le terminal en mode 'connections', c'est bien ça le problème :)
    sinon la solution serais toute trouvé ;)

  • # Dans l'application du terminal

    Posté par  (site web personnel) . Évalué à 3.

    C'est un problème de la part du logiciel qui gère le terminal (gnome-terminal pour Gnome, par exemple).

    Le plus simple serait de créer une extension au logiciel concerné pour capter le signal de fermeture et choisir de laisser passer la fermeture ou non selon la commande en cours. Ou de patcher le logiciel pour ça.

    À noter que si une commande est en cours en avant-plan et que gnome-terminal est censé fermer, il ouvre une fenêtre pour confirmer ou infirmer la fermeture.

    On pourrait trouver d'autres solutions si tu disais plus précisément ce que tu veux, plutôt que le moyen que tu pensais utiliser pour y arriver.

    Commentaire sous licence LPRAB - http://sam.zoy.org/lprab/

  • # trap

    Posté par  . Évalué à 5.

    Le shell reçoit le signal HANGUP à la fermeture de la fenêtre.
    En mettant:

    trap commande 1
    
    

    en début du script, commande sera exécutée lorsque la fenêtre sera fermée.

  • # Trap

    Posté par  . Évalué à 1. Dernière modification le 25 août 2012 à 17:36.

    Malheureusement ne fonctionne pas :/
    et le 1 c'est SIGHUP ;)

    • [^] # Re: Trap

      Posté par  . Évalué à 6.

      J'ai écrit le script:

      #! /bin/sh
      trap " echo SIGHUP >> /tmp/sigs.log" HUP
      sleep 10000000
      
      

      J'ai remplacé 1 par HUP dans la commande trap, qui est la constante associée. La liste des signaux s'obtient avec kill -l et en enlevant le préfixe SIG du nom du signal.

      Lorsque je le lance dans une fenêtre terminal, que ce soit «Gnome Terminal» ou Terminator et que je clique sur l'icône de fermeture de la fenêtre, je récupère:

      SIGHUP
      
      

      dans le fichier /tmp/sigs.log.

      Au fait, je n'ai pas compris ta remarque sur SIGHUP.
      SIGHUP est l’abréviation de "SIGnal HangUP" qui est le signal envoyé par le noyau quand le tty associé au shell est fermé. Le nom provient du temps ou le shell communiquait avec un vrai terminal avec une vraie liaison série connectée à un vrai modem et indiquait que la liaison téléphonique était coupée.

  • # Re :

    Posté par  . Évalué à 1. Dernière modification le 25 août 2012 à 18:43.

    Désolé pour la confusion :$ …
    c'est parce que tu avais mis "Le shell reçoit le signal HANGUP à la fermeture de la fenêtre." ça m'as enduit d'erreur (lol !)

    C'est bon ce que tu m'as donné, seulement le but est de ne pas fermer la fenêtre :), et la elle se ferme quand même, mais bon c'est déjàs pas mal.
    ça ouvre certaines perspectives …
    Merci :)

    • [^] # Re: Re :

      Posté par  . Évalué à 4.

      Juste un petit détail : tous les commentaires ici sont munis de leur propre lien « répondre ». Comme Linuxfr.org organise les discussions en arbre, ce qui est à la fois rare et très agréable, c'est mieux si tu veilles à les utiliser. :-)

      Pour le reste, il faut savoir que lorsque tu ouvres un terminal, tu n'ouvres pas un shell comme si tu ouvrais une « boîte DOS ». Tu crées en fait un véritable terminal virtuel qui s'exploite à travers une pseudo liaison série. Par défaut, le fait de lancer un xterm provoque automatiquement le lancement d'un shell qui y est relié, mais ce n'est pas nécessairement le cas. Il peut très bien rester passif jusqu'à ce qu'une application externe prenne d'elle-même l'initiative d'envoyer quelque chose vers ce port.

      Cela veut dire le terminal X-Term et l'application qui tourne dedans ne sont pas du tout liés entre eux et qu'ils ne communiquent qu'à travers une sorte de pipe bidirectionnel. Donc, tu ne peux pas empêcher le xterm de se refermer puisque c'est une application distincte. Tu peux simplement agir en conséquence.

      • [^] # Re: Re :

        Posté par  . Évalué à 2.

        ok … désolé pour le 'Répondre', j'avais pas calculé :p

        Pour le reste, ben je croit que je vais me tourner vers Python :p

        Merci quand même pour tes réponses (et celle des autre ;))

        à bientôt pour de nouvelles aventures :D

        • [^] # Re: Re :

          Posté par  . Évalué à 5.

          Si tu veux mais ça ne changera RIEN à ton problème de terminal. Le seul moyen d'empêcher sa fermeture serait de lui envoyer une séquence de code, CSI, OSC ou autres qui lui en donne explicitement l'instruction mais après avoir rapidement parcouru la liste de ces séquences et les sources de xterm hier soir, je n'ai rien vu qui ressemble de près ou de loin à cela.

          En revanche, un langage de programmation tel que le C ou le Python te permettrait effectivement d'ouvrir tes propres fenêtres et de les gérer comme tu le souhaites, mais c'est un autre niveau. Sans être vraiment difficile, il faut quand même initialiser un contexte, gérer une boucle principale, etc.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.