URL: https://linuxfr.org/forums/programmation-perl/posts/probl%C3%A8me-avec-exec-en-perlgtk Title: Problème avec exec() en Perl/Gtk Authors: oliwer Date: 2005年09月08日T18:16:23+02:00 Tags: Score: 0 Bonjour :) Voilà : j'adore le système des Alias sous bash. Le problème c'est que lorsque je tape un alias, qui va lui-même lancer un ou plusieurs programmes, la console est inutilisable tant que l'application lancée n'est pas fermée. Il est possible d'intégrer le lanceur de programme (Alt+F2) dans ma barre d'outils (je suis sous xfce mais je crois qu'on peut faire pareil sous gnome ou kde), malheuresement ce lanceur de programme ne gère pas les alias (ce qui est normal puisqu'il ne passe pas par bash). Donc ce que je voudrais, c'est un petit lanceur de programme qui passe par bash pour exécuter la commande que je lui transmet. Voilà une première version minimaliste : #!/usr/bin/perl -w use strict; # Include use Gtk2 '-init'; # Boolean management use constant TRUE => 1 ; use constant FALSE => 0 ; # Main Window my $window = Gtk2::Window->new( 'toplevel' ); $window->set_border_width(15); $window->set_title( 'XeAm' ); $window->signal_connect( 'delete_event', \&close_windows ); $window->signal_connect( 'destroy' , \&destroy_window ) ; # A text entry my $entry = Gtk2::Entry->new; $entry->signal_connect( 'activate', \&enter_callback, $entry ); $entry->select_region( 0, length( $entry->get_text() ) ); $window->add( $entry ); $entry->show(); $window->show(); Gtk2->main ; ### Subroutines sub enter_callback { £spaces£ £/spaces£my ( $widget, $entry ) = @_; £spaces£ £/spaces£my $command = $entry->get_text(); £spaces£ £/spaces£exec "bash -i -c $command"; } sub close_windows { £spaces£ £/spaces£return FALSE; } sub destroy_window { £spaces£ £/spaces£Gtk2->main_quit; £spaces£ £/spaces£return FALSE; } ça marche, mais dés que j'écris un alias et que je tape sur "entrer", le programme correspondant ce lance et mon petit programme en Perl se ferme aussitôt! Pourquoi se ferme-t-il ? Je voudrais qu'il reste ouvert en permanance et qu'il soit toujours prêt à recevoir une commande. Comment faire ? Merci pour votre aide :)