IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Compression de dossier en tar.gz


Sujet :

C++

  1. #1
    Membre régulier
    Homme Profil pro
    .
    Inscrit en
    Octobre 2014
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : .
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2014
    Messages : 174
    Points : 90
    Points
    90
    Par défaut Compression de dossier en tar.gz
    Bonjour,

    Voila, je suis stagiaire et ça fait un moment que je galère pour réaliser la compression de dossier en tar.gz sous eclipse C++ avec ubuntu.
    Je dois réaliser ce travail sous une architecture ARM.
    Mais voila, je bloque soit à cause des librairies incomplètes de boost, soit à cause des librairies de minizip.
    Je voulais savoir si vous aviez une solution simple pour réaliser un tar.gz en C++ . (sans passer par system(... bash.sh) qui n'est pas accepter par le support que j'utilise).

    Merci à vous

  2. #2
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    Il y a quelque chose qui m'échappe.
    Je comprend qu'on interdise system.
    Mais la commande "tar -cvzC chemin/du/dossier" ne fonctionnerait-elle pas?

    Partant d'un ubuntu, tu as forcément accès à un shell. Ne serait-ce que parce que c'est lui qui lance ton programme.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  3. #3
    Membre régulier
    Homme Profil pro
    .
    Inscrit en
    Octobre 2014
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : .
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2014
    Messages : 174
    Points : 90
    Points
    90
    Par défaut
    Merci l'eternel,

    Je travail sur un système embarqué qui malheureusement ne me donne pas les droits pour exécuter un shell depuis la commande system().
    Si je compile effectivement mon projet sous ubuntu (via eclipse), le système à qui est dédier le fichier .exe n'est pas sous ubuntu mais une autre variante de linux spécifique à ce projet.
    Enfin, il faut que la commande tar parte du programme lui même déclenché par interruption au travers de d'autres programmes

  4. #4
    Membre régulier
    Homme Profil pro
    .
    Inscrit en
    Octobre 2014
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : .
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2014
    Messages : 174
    Points : 90
    Points
    90
    Par défaut
    Comme je suis encore un jeune padawan de l'informatique, je m'empêtre les pinceaux lors de la compilation de librairies surtout s'il s'agit de recompiler une lib boost qui s'avère incomplète en intégrant les éléments manquants.
    Mais je crois que 99% des problèmes que je rencontre dans ce travail viennent de là.
    * aussi si vous avez connaissance d'une lib. simple à utilisé ou fonction qui me permettrais de compresser un dossier en tar.gz...

  5. #5
    Membre émérite
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Points : 2 799
    Points
    2 799
    Par défaut
    Tu peux essayer avec libarchive https://github.com/libarchive/libarchive.

    Je ne sais pas si elle compile sur ARM, par contre.

  6. #6
    Expert éminent sénior

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 031
    Points : 11 476
    Points
    11 476
    Billets dans le blog
    11
    Par défaut
    as-tu essaye execv ?
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  7. #7
    Membre régulier
    Homme Profil pro
    .
    Inscrit en
    Octobre 2014
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : .
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2014
    Messages : 174
    Points : 90
    Points
    90
    Par défaut
    Salut,

    Je ne connais pas execv.
    C'est pour lancer un shell?

  8. #8
    Membre émérite
    Avatar de prgasp77
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Juin 2004
    Messages
    1 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 306
    Points : 2 466
    Points
    2 466
    Par défaut
    Bonjour Hyssgrif et bienvenu.

    Puisque tu as des contraintes particulières aux systèmes embarqués, je te conseille pour tes prochains topics de les ouvrir dans le forum dédié ; tu auras éventuellement des réponses plus adaptées.

    Concernant ton problème plus particulièrement, on aimerait bien savoir si le binaire tar est installé sur le système cible. Si oui, tu pourrais l'invoquer directement (sans passer par un shell). Si c'est envisageable, man execv .
    -- Yankel Scialom

  9. #9
    Membre régulier
    Homme Profil pro
    .
    Inscrit en
    Octobre 2014
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : .
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2014
    Messages : 174
    Points : 90
    Points
    90
    Par défaut
    Salut,

    Merci prgasp77, le binaire tar est bien installé sur le système cible mais je ne peux pas l'invoquer directement.
    Mon but et de réaliser un programme de compression tar.gz en C++ qui sera lui même appeler par un autre process.
    Malheureusement ce programme ne peut pas appeler de shell car il y a des sécurité qui bloquent l'accès...
    Tout comme la fonction system(), la fonction execv ne marche pas sur mon système embarqué, cependant elle marche bien sur ma session ubuntu.

  10. #10
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    rajoutez des droits sur tar (via le groupe d'utilisateur), et tu pourras l'invoquer.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  11. #11
    Membre régulier
    Homme Profil pro
    .
    Inscrit en
    Octobre 2014
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : .
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2014
    Messages : 174
    Points : 90
    Points
    90
    Par défaut
    En faite, je peut invoquer tar directement en commande sur mon system mais ce n'est pas mon but.
    Je dois soit l'invoquer sous un programme qui en fait appel mais manque de chance, system() ou execv() ne marche pas sur le system que j'utilise,
    soit utiliser une biblio du genre boost &/ou zlib pour réaliser ce programme en C++ .

  12. #12
    Membre émérite
    Avatar de prgasp77
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Juin 2004
    Messages
    1 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 306
    Points : 2 466
    Points
    2 466
    Par défaut
    Citation Envoyé par Hyssgrif Voir le message
    la fonction execv ne marche pas sur mon système embarqué
    Ok c'est ce que je voulais savoir.

    Citation Envoyé par leternel Voir le message
    rajoutez des droits sur tar (via le groupe d'utilisateur), et tu pourras l'invoquer.
    C'est un peu plus compliqué que ça, sur de nombreux systèmes embarqués la libc n'est pas complète ; ici execv() n'est peut-être pas implémenté.

    Hyssgrif : t'es-tu intéressé à la suggestion de white_tentacle ?
    -- Yankel Scialom

  13. #13
    Membre régulier
    Homme Profil pro
    .
    Inscrit en
    Octobre 2014
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : .
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2014
    Messages : 174
    Points : 90
    Points
    90
    Par défaut
    Ha oui, d'ailleur merci à toi white_tentacle,

    Pour le moment je cherche encore à faire marcher la zlib sur boost qui m'offre par mal d'outils annexes don je me sers dans le projet.
    Je pense avoir la solution sur
    https://tlzprgmr.wordpress.com/2010/...1-2-4-support/
    mais je ne vais pas pouvoir la tester dans l'immédiat (problème de temps).
    Je vous ferais un retour dès que j'aurais tester cette méthode.
    Merci à vous

Discussions similaires

  1. Compression de dossier format tar.gz sous C++
    Par Hyssgrif dans le forum C++
    Réponses: 7
    Dernier message: 19/05/2015, 12h25
  2. [Débutant][C#] Compression de dossier de manière récurssive
    Par LordProgz dans le forum Windows Forms
    Réponses: 10
    Dernier message: 12/01/2010, 13h55
  3. Compression d'un dossier en tar.gz sans garder l'arborescence
    Par MagicManu dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 21/03/2007, 08h53
  4. Compresser un dossier avec Compress::Zlib
    Par mobscene dans le forum Modules
    Réponses: 1
    Dernier message: 17/11/2006, 21h13
  5. compresser un dossier
    Par kevain_09 dans le forum VBScript
    Réponses: 3
    Dernier message: 07/09/2006, 18h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo