J'écris en langage C un programme qui contient ces lignes:Exécuter programme shell avec execv
void main(int argc, char *argv[]) {
char* file=argv[1];
char* arguments[] = { "sh", argv[2], argv[3], argv[4], file, NULL };
execv("/bin/sh", arguments);
}
Le fichier est prog.sh
qui contient une simple somme d'arguments:
expr $1 + $2 + $3
Quand je exécuter le programme en ./main prog.sh 1 2 3
j'obtiens une erreur qui est
/bin/sh: 0: Can't open 1
Alors que je attendre la sortie 6 (somme de 1 2 3)
Avez-vous ce code compilé? Dans l'exécutable 'expr'. Et ça a l'air * extrêmement * gênant. Vous avez un script shell, appelez un exécutable qui appelle un script shell, appelez l'exécutable ... Cela ne se terminera pas paisiblement. –
Lorsque je cours (sh prog.sh 1 2 3) à partir du terminal cela fonctionne. Non, je n'ai qu'un programme C appelant un script shell :) – Mehdi
Qu'est-ce que 'main'? –