Forum Programmation.c Exécuter un binaire dans un terminal en double-cliquant dessus

Posté par .
Tags : aucun
0
15
oct.
2005
Bonsoir tout le monde !

Je débute la programmation et j'utilise Linux (Debian) depuis très peu de temps et donc, je me pose une question !

Je developpe pour le moment en mode console (et oui, je débute !). Et je voulait savoir s'il était possible de lancer un binaire créé par mes soins dans une console en double-cliquant dessus a partir de nautilus ? Je sais que peut ètre, ma question peut ne pas parraitre clair, je m'explique :

Prenons par exemple ce petit bout de code qui est bien connu des débutant ! Et je l'enregistre pour l'exemple dans le fichier 'test.c'.
#include <stdio.h>
main()
{
printf("Hello World !\n");
}

Admettons que j'enregitre ce fichier dans le répertoire personnel de mon user ! Je compile ensuite le code afin qu'il crée le binaire "test" qui se trouvera également dans le même répertoire. Voila ce qui ce passe actuellement lorsque je veux exécuter mon programme :
user@debian:~$ ./test
Hello World !
user@debian:~$

Moi ce que je voudrait arriver a faire, pour simplifier le lancement de mes applications, c'est que depuis nautilus et bien quand je double-clique dessus, et bien un terminal s'ouvre ou il n'y aurai pas de prompt et que mon programme s'exécute, c'est à dire que dans le terminal qui s'ouvre quand je double-clique sur le binaire, et bien il y est juste cela d'afficher dans le terminal :
Hello World !
J'espère avoir été assez clair dans mes explications ! Donc, si quelqu'un a une solution a me proposer, je l'en remercie d'avance !

Bonne soirée !

FoX
  • # 2 méthodes possibles

    Posté par . Évalué à 1.

    Je ne connais pas Nautilus. Mais s'il permet d'executer des binaires/scripts à la façon de rox-filer, tu peux utiliser deux méthodes en fonction de ses possibilités :

    S'il te permet de définir le logiciel à utiliser pour "ouvrir" tel ou tel type de fichier, tu pourras éventuellement lui dire d'utiliser xterm du genre xterm -e $1 qui lancera un xterm pour executer ton programme non graphique (c'est également valable pour les logiciels graphiques, mis à part le fait qu'un terminal s'ouvrira le temps de son execution).

    Si ce n'est pas possible, tu peux par exemple placer ceci dans un petit fichier texte :
    #! /bin/sh
    xterm -e /home/user/test

    puis d'ajouter la permission d'execution avec chmod +x.

    De cette façon, le double clic sur ce "script" permettra de lancer ton application avec une console. C'est pas terrible, certes, mais si tu comptes faire ça pour quelques binaires uniquement, ça peut être une solution...
    • [^] # Re: 2 méthodes possibles

      Posté par . Évalué à 1.

      Merci deneb pour ta réponse, malheureusement, j'y avait déja pensé ! Mais en utilsant ces methodes, il y a juste un terminal qui s'ouvre et se ferme très vite ! Je n'est même pas le temps de pouvoir lire quelque chose tellement sa va vite !

      Pourtant , jai bien mis un truc en plus du "hello world !" afin que le programme se bloque ! il faut que j'appuis sur une touche pour qu'il se termine (getchar()) !

      Peut ètre d'autres suggestions ?
      • [^] # Re: 2 méthodes possibles

        Posté par . Évalué à 1.

        Normalement, avec getchar() le programme ne se terminera pas tant que tu n'auras pas frapper une touche. Si le terminal s'ouvre et se ferme aussitôt, c'est peut être à cause d'un chemin relatif/incomplet (no such file or directory).

        Pourtant , jai bien mis un truc en plus du "hello world !" afin que le programme se bloque ! il faut que j'appuis sur une touche pour qu'il se termine (getchar()) !

        Donc à priori le programme ne s'execute pas sinon le terminal resterait ouvert.

        Avec la méthode du script shell qui lance ton binaire, il faut mettre le chemin absolu pour lancer l'executable. C'est à dire "xterm -e /home/user/binaire" et non pas "xterm -e binaire". Essai en lançant le script en console pour voir sa réaction.

        Tu peux le vérifier dans ton script. Par exemple en mettant :

        #! /bin/sh
        BIN_PATH="/home/user/le_binaire"
        if [ -f $BIN_PATH ]
        then xterm -e $BIN_PATH
        else xmessage "Programme introuvable !"
        fi

        Ainsi tu seras prévenu par un xmessage que le script n'a pas pu lancer ton programme avec xterm.

        Il existe sans doute une solution adaptée à ton problème mais je n'ai pas très bien compris ce que tu recherches à faire. Pourrais tu expliquer davantage ?
        • [^] # Re: 2 méthodes possibles

          Posté par . Évalué à 1.

          Ça y est, sa marche !

          En fait c'est que je ne précisait pas le chemin de manière absolue !

          Maintenant, sa fonctionne impecable ! Il me reste plus qu'a trouver comment faire pour que nautilus exécute cette commande quand je clique sur un fichier. Je ne pense pas que ça soit compliquer, je vais regarder ça !

          En fait, ce que je voulait arriver a faire, c'est pareil que sur Windows, c'est a dire que quand je clique sur un *.exe, celui-ci souvre dans une console MS-DOS (enfin, pour les programme en mode texte biensur ! )

          Merci beaucoup deneb pour ton aide, sa va drolement me simplifier la vie !

Suivre le flux des commentaires

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