Commande linux

Discutez d'informatique ici !
samirou
Membre Relatif
Messages: 166
Enregistré le: 06 Fév 2012, 22:55

commande linux

par samirou » 20 Juil 2015, 09:41

Bonjour, je veux écrire un programme C qui exécute une commande avec ses arguments.
Exemple cp avec ses arguments ou ls avec ses arguments. Je cherche de l'aide parce que je n'arrive pas à le faire. Merci de votre compréhension



Avatar de l’utilisateur
Rockleader
Habitué(e)
Messages: 2126
Enregistré le: 11 Oct 2011, 18:42

par Rockleader » 20 Juil 2015, 09:56

samirou a écrit:Bonjour, je veux écrire un programme C qui exécute une commande avec ses arguments.
Exemple cp avec ses arguments ou ls avec ses arguments. Je cherche de l'aide parce que je n'arrive pas à le faire. Merci de votre compréhension



Je ne sais pas ce que tu cherches à faire exactement, mais si tu veux simplement faire une commande système comme un ls; alors tu peux utiliser la fonction system qui prendra ta commande en paramètre sous la forme d'une chaine.

http://www.tutorialspoint.com/c_standard_library/c_function_system.htm

Tu as aussi les fonction exec qui font ça.
Cette histoire est entièrement vraie puisque je l'ai inventé du début à la fin !

samirou
Membre Relatif
Messages: 166
Enregistré le: 06 Fév 2012, 22:55

par samirou » 20 Juil 2015, 11:01

Bonjour, mon objectif est par exemple si je prends la commande cp je donne ce qu'il fait de même pour ses arguments:
cp-i
cp-l
cp-s
p-p
cp-r
cp-b
etc...

Avatar de l’utilisateur
ampholyte
Membre Transcendant
Messages: 3940
Enregistré le: 21 Juil 2012, 07:03

par ampholyte » 20 Juil 2015, 13:23

Bonjour,

Tu dois faire 2 choses :

1) Créer une chaine contenant la concaténation des arguments envoyés à ton programme

2) Effectuer comme indiquer par Rockleader un system sur ce buffer.


Voici une solution possible (très rapide) que tu peux utiliser après avoir essayer toi même =).

Code: Tout sélectionner
[color=white]
#include
#include

int main(int argc, char *argv[]) {
    int i;
    char buffer[1024 + 1];
 
    memset(buffer, 0, (1024 + 1) * sizeof(char));
    for (i = 1; i < argc; i++) {
         strcat(buffer, argv[i]);
         strcat(buffer, " ");
    }
     
    system(buffer);

    return (0);
}
[/color]

jvf
Membre Naturel
Messages: 16
Enregistré le: 23 Juil 2015, 02:27

par jvf » 07 Aoû 2015, 04:37

samirou a écrit:Bonjour, mon objectif est par exemple si je prends la commande cp je donne ce qu'il fait de même pour ses arguments:
cp-i
cp-l
cp-s
p-p
cp-r
cp-b
etc...



Bonjour,
Sous GNU/Linux et d'ailleurs sous beaucoup de systèmes UNIX, il existe un excellent utilitaire qui se nomme alias.
Il permet de définir un alias pour une commande donnée.

jonas@vpsxxxxxx:/home/jonas$ alias lsa='ls -la'
Résultat :
jonas@vpsxxxxxx:/home/jonas$ lsa
total 50672
drwxr-xr-x 4 jonas jonas 4096 juil. 23 05:40 .
drwxr-xr-x 3 root root 4096 mars 3 05:14 ..
drwxr-xr-x 2 root root 4096 mars 3 05:20 alfresco
-rw------- 1 jonas jonas 519 juil. 23 05:45 .bash_history
-rw-r--r-- 1 jonas jonas 220 déc. 30 2012 .bash_logout
-rw-r--r-- 1 jonas jonas 3392 déc. 30 2012 .bashrc
drwxr-xr-x 3 root root 4096 juil. 20 06:28 dolibarr
-rw-r--r-- 1 jonas jonas 675 déc. 30 2012 .profile
-rw-r--r-- 1 root root 25921440 juil. 23 05:40 projeqtorV5.0.3.zip
-rw-r--r-- 1 root root 1003 juin 5 20:02 Release.key
-rw-r--r-- 1 jonas jonas 21 mars 10 20:11 test.txt


Enfin, je vais faire un petit rappel.
Les commandes linux, ça n'existe pas car linux est un noyau de système, pas un interpréteur de commandes...



Bonne continuation

 

Retourner vers ϟ Informatique

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite