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 :

Commande Linux dans un code C


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de chercheur111
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2010
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2010
    Messages : 352
    Par défaut Commande Linux dans un code C
    Bonjour,

    Voici ma commande Linux que j'aimerais bien exécuter dans un code C:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    criu dump -R -D img4 -t 19538 -vvv -o dump.log && echo OK
     
    19538 pid process
    J'ai commencé à écrire quelques lignes de code en C:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    int nb= getpid();
    char * s= "criu dump -R -D img -t 19538 -vvv -o dump.log && echo OK";
    system(s);
    Ma question comment intégrer nb dans la commande au lieu de 19538, avez-vous une idée sur une solution ?



    Merci d'avance.
    Cordialement.

  2. #2
    Membre chevronné
    Homme Profil pro
    très occupé
    Inscrit en
    Juillet 2014
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : très occupé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 137
    Par défaut
    Si ton problème est d'intégrer un nombre dans une chaîne C, tu peux le faire avec sprintf, par exemple comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #include <stdio.h>
     
    int main(void)
    {
        int nb = 19538;
        char s[BUFSIZ];
     
        sprintf(s, "criu dump -R -D img -t %d -vvv -o dump.log && echo OK", nb);
        printf("La commande à exécuter est :\n\n%s\n", s);                                                 
     
        return 0;
    }

    Eks

  3. #3
    Membre éclairé Avatar de chercheur111
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2010
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2010
    Messages : 352
    Par défaut
    Il fait la concaténation mais ma commande génère des fichiers output.. je l'ai pas trouvé dans le dossier imag

    Avez-vous une idée ?

    Merci d'avance.

  4. #4
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    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 202
    Par défaut
    a priori, c'est ta commande qui est erronée.

    Cela dit, je ne recommande pas l'appel à system.
    Le plus souvent, les applications sont construites autour d'une bibliothèque, qu'il vaut mieux utiliser.

    Regarde la page officielle de l'API C de CRIU

  5. #5
    Membre chevronné
    Homme Profil pro
    très occupé
    Inscrit en
    Juillet 2014
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : très occupé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 137
    Par défaut
    Citation Envoyé par chercheur111 Voir le message
    Avez-vous une idée ?
    heu... rajouter :

    ?

    Je voulais juste te montrer comment fonctionne sprintf, qui répond à ta question "comment intégrer nb dans la commande au lieu de 19538, avez-vous une idée sur une solution ?" en insérant la bonne valeur dans ce qui est affecté à s.

    A toi d'en intégrer le fonctionnement à ton programme, dont je ne connais rien.


    Eks

  6. #6
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    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 202
    Par défaut
    C'est pas faux non plus...

  7. #7
    Membre éclairé Avatar de chercheur111
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2010
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2010
    Messages : 352
    Par défaut
    OK, merci pour le lien, je vais voir.

    Cordialement.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Commande linux dans un code java
    Par chercheur111 dans le forum Général Java
    Réponses: 1
    Dernier message: 29/04/2012, 18h07
  2. Commande linux dans un code C
    Par chercheur111 dans le forum Linux
    Réponses: 10
    Dernier message: 24/03/2012, 19h52
  3. Réponses: 7
    Dernier message: 09/11/2010, 18h00
  4. [Système] Commande Linux dans Programme PHP
    Par makohsarah dans le forum Langage
    Réponses: 3
    Dernier message: 10/09/2007, 12h36
  5. Réponses: 2
    Dernier message: 24/06/2003, 20h31

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