Insérer du code shell dans un programme C ou C++ et vis versa
Résolu/Fermé
hymenoptera
Messages postés
36
Date d'inscription
mercredi 24 août 2016
Statut
Membre
Dernière intervention
18 décembre 2018
-
24 août 2016 à 11:56
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 25 août 2016 à 10:41
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 25 août 2016 à 10:41
A voir également:
- Shell c++
- Classic shell windows 11 - Télécharger - Personnalisation
- Shell startup windows 10 - Guide
- Ssh secure shell download - Télécharger - Divers Web & Internet
- Efi shell version 2.50 - Forum Windows 10
- Classic shell c'est quoi ✓ - Forum Windows 8 / 8.1
1 réponse
hymenoptera
Messages postés
36
Date d'inscription
mercredi 24 août 2016
Statut
Membre
Dernière intervention
18 décembre 2018
1
24 août 2016 à 15:08
24 août 2016 à 15:08
C'est bon j'ai trouvé, pour ceux que ça intéresse je vais poster la solution que je cherchais :
il faut inclure <cstdlib> pour le C++ ou <stdlib.h> pour le C
utiliser
au lieu du simple
déclarer mes arguments (ici j'ai déclaré 2 arguments):
exécuter mon programme en passant les deux variables, que je récupère du script, comme arguments :
arg1 sera égale à $VARIABLE1 que j'ai récupéré de mon script, pareil pour arg2 qui sera égale à $VARIABLE2
y a plus qu'à exécuter mon programme dans la boucle de mon script comme ceci :
Bonne journée à tous :)
il faut inclure <cstdlib> pour le C++ ou <stdlib.h> pour le C
utiliser
main (int argc, char ** argv)
au lieu du simple
main()
déclarer mes arguments (ici j'ai déclaré 2 arguments):
int arg1= atoi(argv[1]);
int arg2= atoi(argv[2]);
exécuter mon programme en passant les deux variables, que je récupère du script, comme arguments :
g++ mon_programme.C
./a.out $VARIABLE1 $VARIABLE2
arg1 sera égale à $VARIABLE1 que j'ai récupéré de mon script, pareil pour arg2 qui sera égale à $VARIABLE2
y a plus qu'à exécuter mon programme dans la boucle de mon script comme ceci :
#! /bin/bash
VARIABLE1=1
VARIANLE2=2
g++ mon_programme.C
for i in $(seq 1 50) ; do
perf stat -e instructions mon_application
./a.out $VARIABLE1 $VARIABLE2
done
Bonne journée à tous :)
24 août 2016 à 18:31
Pour info, en C, atoi() est obsolète. Il vaut mieux utiliser strtol().
En C++, on utilise plutôt les méthodes de la classe String.
Tu peux même tester la date de ton fichier mon_programme.C par rapport au a.out pour éviter une recompilation inutile. Et au cas où, tu peux mettre -o nomProgramme dans g++ pour mettre un vrai nom de programme (plutôt que a.out).
24 août 2016 à 23:42
Merci d'avoir pris le temps de répondre.
Il me semble que strtol est utilisé pour les types "long int" même chose pour "atol", alors que "atoi" c'est pour les simples int. Dans un programme assez gourmand en memoir ce n'est pas négligeable.
C'est intéressant de tester la compilation avec la date, je vais voir comment on peut faire ça. Merci pour le tuyau ;)
Même dans un exemple ce fameux "a.out" fait encore parler de lui
25 août 2016 à 10:41
Sauf que atoi() est obsolète...
De plus, ce n'est pas parce qu'il est utilisé pour les long que cela ne fonctionne pas avec les int.
Et enfin, la taille d'un long int et d'un int est la même sur pas mal de plateforme :-).
Pour le test, tu peux regarder du côté de makefile. Ca nécessitera la création d'un fichier supplémentaire (contenant 2 lignes). N'hésite pas si tu veux plus de précision.