Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1171 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  shellexecute pour linux

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

shellexecute pour linux

n°1424134
d'jo
Posté le 11-08-2006 à 09:44:07  profilanswer
 

Bonjour,
 
Je n'arrive pas à trouver l'équivalent de shellexecute pour linux.Il ya bien la fonction system() mais elle ne fonctionne pas si je veux executer \home\test\test par exemple...
Si quelqu'un peut m'aider
 
 merci


Message édité par d'jo le 11-08-2006 à 09:53:24
mood
Publicité
Posté le 11-08-2006 à 09:44:07  profilanswer
 

n°1424136
Elmoricq
Modérateur
Posté le 11-08-2006 à 09:52:36  profilanswer
 

system() [:dawak]

n°1424137
d'jo
Posté le 11-08-2006 à 09:53:49  profilanswer
 

sais tu l'utiliser ??

n°1424139
Elmoricq
Modérateur
Posté le 11-08-2006 à 09:56:42  profilanswer
 

Oui. [:klem3i1]

n°1424140
d'jo
Posté le 11-08-2006 à 10:04:21  profilanswer
 

lol . Peux tu rapidement m'expilquer je ne comprend pas je fais :
 
int main()
{
system("./main " );
return 0;
}
 
ou avec le nom complet du chemin , il execute le programme mais  
ne lance pas l'autre ..

n°1424142
d'jo
Posté le 11-08-2006 à 10:08:05  profilanswer
 

C'est bon trouvé merci. Maintenant plus compliqué sais tu le faire executer sous un autre terminal ??

Message cité 1 fois
Message édité par d'jo le 11-08-2006 à 10:08:21
n°1424144
franceso
Posté le 11-08-2006 à 10:10:42  profilanswer
 

d'jo a écrit :

C'est bon trouvé merci. Maintenant plus compliqué sais tu le faire executer sous un autre terminal ??

Tu peux lancer l'exécution dans un nouveau terminal, par exemple comme ça :

Code :
  1. system( "xterm -e taCommande" );


---------------
TriScale innov
n°1424145
d'jo
Posté le 11-08-2006 à 10:11:17  profilanswer
 

super merci beaucoup

n°1424169
d'jo
Posté le 11-08-2006 à 10:32:12  profilanswer
 

Bon encore un bogue..
 
system("xterm -e cd jo/test/" );
 
marche po ..apparement il aime pas cd... une idée ??

Message cité 1 fois
Message édité par d'jo le 11-08-2006 à 10:32:47
n°1424184
franceso
Posté le 11-08-2006 à 10:51:31  profilanswer
 

d'jo a écrit :

Bon encore un bogue..
 
system("xterm -e cd jo/test/" );
 
marche po ..apparement il aime pas cd... une idée ??


Une chose utile à savoir : lorsque tu fais "xterm -e uneCommande", un nouvel xterm se lance, exécute la commande passée en argument (plutôt que de lancer un shell comme d'habitude) et se termine dès que la commande se termine. Du coup, "xterm -e cd ..." n'a pas un intéret fou.
 
Par ailleurs, cd n'est de toutes façons pas un exécutable. Il s'agit juste d'une commande que ton shell interprête pour changer le répertoire courant. Lancer un cd comme ça en dehors d'un shell n'a pas de sens.
 
Que veux tu faire exactement ? Quelle est la commande que tu veux exécuter ?


---------------
TriScale innov
mood
Publicité
Posté le 11-08-2006 à 10:51:31  profilanswer
 

n°1424191
d'jo
Posté le 11-08-2006 à 11:00:33  profilanswer
 

franceso a écrit :


Que veux tu faire exactement ? Quelle est la commande que tu veux exécuter ?


 
En fait le but est d'executer un autre programme qui ne sera pas forcement dans le répertoire courant justement d'ou le cd..En fait j'associerai system() à un sprintf avant pour que l'utilisateur choisisse le repertoire du style :
 

Code :
  1. char Data_Path[50];
  2. sprintf(prog,"%stest.exe",Data_Path);
  3. system(prog);


 
Voila l'idée j'ai deja fait toute la partie interface derriere.

n°1424199
youx21
Posté le 11-08-2006 à 11:07:13  profilanswer
 

d'jo a écrit :

En fait le but est d'executer un autre programme qui ne sera pas forcement dans le répertoire courant justement d'ou le cd..En fait j'associerai system() à un sprintf avant pour que l'utilisateur choisisse le repertoire du style :
 

Code :
  1. char Data_Path[50];
  2. sprintf(prog,"%stest.exe",Data_Path);
  3. system(prog);


 
Voila l'idée j'ai deja fait toute la partie interface derriere.


 
personnellemnt j'utilise souvant cette possibilité, mais je spécifie toujours mes chemins en absolue pour savoir où je suis. Tout cela rendu possible, bien sur, avec quelques fichiers de configuration, et il n'y a pas trop de problème. Par contre ne pas oublier de traiter les flux de données en sortie de ton programme, et à gerer les éventuelles erreurs. ça en fait du code mine de rien...


Message édité par youx21 le 11-08-2006 à 11:09:30
n°1424216
d'jo
Posté le 11-08-2006 à 11:23:59  profilanswer
 

j'utilise aussi les chemins en absolu mais en fait le probleme c'est de l'executer dans une autre fenetre: system(xterm -e prog)
ca ca ne marche pas..
 
merc en tous cas et bon appetit

n°1424227
franceso
Posté le 11-08-2006 à 11:40:05  profilanswer
 

d'jo a écrit :

j'utilise aussi les chemins en absolu mais en fait le probleme c'est de l'executer dans une autre fenetre: system(xterm -e prog)
ca ca ne marche pas..


 
Ce que tu veux, c'est exécuter un programme qui n'est pas dans le répertoire courant (auquel cas il suffit de fournir le chemin complet), ou bien lancer depuis un autre répertoire l'exécution d'un programme ?
 
Dans le deuxième cas, une solution simple consiste à faire un petit shell script qui te cd dans le bon répertoire (par exemple il récupère le nom du répertoire en ligne de commande) et qui appelle le programme que tu veux. Tu peux appeler ce script depuis ton prog C++ avec un system("xterm -e script repertoire" )


---------------
TriScale innov
n°1424247
d'jo
Posté le 11-08-2006 à 11:58:43  profilanswer
 

Ok merci

n°1429979
Ben_be
ʎlıɐp uǝɯǝlʇuǝƃ ̡̢̛̗̘̙̜̝̞̟̠̊̋̌̍
Posté le 23-08-2006 à 15:15:20  profilanswer
 

Si le nom du programme est test dans /home/jo, il faut taper ca dans un terminal pour le lancer de n'importe ou (si j'ai bien compris la question):

/home/jo/./test


Chez moi, ca marche  [:cosmoschtroumpf]


---------------
Putain j'ai rêvé de toi cette nuit !! Alors que jte connais même pas !!-LaL0utre | Ben_be est un roxxeur d'ours d'envergure mondiale-Daaadou |Entre un dessert et Ben_be je choisis Ben_be-Ramasse-miette
n°1430026
Elmoricq
Modérateur
Posté le 23-08-2006 à 15:49:28  profilanswer
 

Ben_be a écrit :

Si le nom du programme est test dans /home/jo, il faut taper ca dans un terminal pour le lancer de n'importe ou (si j'ai bien compris la question):

/home/jo/./test


Chez moi, ca marche  [:cosmoschtroumpf]


 
[:doc petrus]
 
Aucune différence entre "/home/jo/test" et "/home/jo/./test".
Parce que "." signifie, sur unixoïde, le répertoire courant.
 
Si ça t'amuse, tu peux même marquer : "/home/./././././jo/./././././././././test", et ça fonctionne aussi. [:dawa]
 
Ce qui est dit ici c'est que, souvent, le répertoire courant ne figure pas dans la liste des répertoires contenant des binaires exécutables de n'importe où. Cette liste de répertoire est stockée dans la variable d'environnement $PATH, et c'est justement en ajoutant "." dans cette variable d'environnement que l'on indique au shell que le répertoire courant peut également contenir des binaires susceptibles d'être exécutés.
 
Ainsi (exemple bidon en ksh) :

$ ls
drwxrwxrwt  7 user group      2048 Aug 22 19:18 .
drwxr-xr-x  7 user group      3072 Aug 22 16:05 ..
-rwxrwxr-x  1 user group      6172 Aug 22 15:41 remi
$ echo $PATH
/bin:/usr/bin:/usr/local/bin
$ remi
remi: command not found
$ export PATH=$PATH:.
$ echo $PATH
/bin:/usr/bin:/usr/local/bin:.
$ remi
Bonjour, je m'appelle Rémi et je suis sans famille.
$  


 
[:klem3i1]
 
 
A noter que si c'est valable pour ".", c'est du coup valable pour n'importe quel répertoire. Si tu veux que les binaires de /home/jo soient exécutables de n'importe où, il suffit d'ajouter ce répertoire à $PATH.


Message édité par Elmoricq le 23-08-2006 à 15:51:18
n°1430033
Ben_be
ʎlıɐp uǝɯǝlʇuǝƃ ̡̢̛̗̘̙̜̝̞̟̠̊̋̌̍
Posté le 23-08-2006 à 15:56:52  profilanswer
 

Ha ben merci :jap:,
J'ai appris un truc là (apprendre ca après presque 2 ans sous linux, c'est un peu la honte, mais bon  [:iorili]  )  
Le coup de devoir exécuter un truc dans le répertoire conrrant, j'avais déjà eu le problème en plus, merci  :jap:


---------------
Putain j'ai rêvé de toi cette nuit !! Alors que jte connais même pas !!-LaL0utre | Ben_be est un roxxeur d'ours d'envergure mondiale-Daaadou |Entre un dessert et Ben_be je choisis Ben_be-Ramasse-miette
n°1434021
Dumbledore
Posté le 30-08-2006 à 22:30:18  profilanswer
 

y a aussi les appels systèmes de la famille exec (man 3 exec < pour la doc)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  shellexecute pour linux

 

Sujets relatifs
Equivalents API Win32 sous Linux[C#/.net] Faire de la VoIP sous Linux et windows
Compilation sous Windows d'un devellopement sous LinuxWxWidgets/Opengl/Linux
problème compilation mpich - LinuxPortabilité linux
Connexion a une base Access sous linuxConnection a une bdd MS SQL depuis serveur linux
Execution d'un script à distance : linux -> winXPDévelopper sous linux au 21ème siècle
Plus de sujets relatifs à : shellexecute pour linux


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR