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 deneb . Évalué à 1.
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 FoXdEb . Évalué à 1.
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 deneb . Évalué à 1.
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 FoXdEb . Évalué à 1.
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 à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.