start terminal (sh) from execv return error: / bin / sh: / bin / sh: impossible d'exécuter le fichier binaire


junior_software

J'essaie d'exécuter la commande sh qui démarre un nouveau terminal sous Linux à partir du programme ac, mais j'obtiens cette erreur / bin / sh: / bin / sh: impossible d'exécuter le fichier binaire lorsque j'utilise execv () et même résultat avec fork puis execv. mais quand je l'ai essayé la commande système a réussi, comment puis-je faire cette commande avec execv?

travaux :

int main (){
        system("sh");
        return 0;
}

ne fonctionne pas:

int main (){

        int ret=0;
        char *argv[] = {"/bin/bash", "/bin/sh",NULL};
        ret=execv(argv[0], argv);

        printf("ret: %d \n",ret);
        return 0;
}

ce code renvoie cette erreur: / bin / sh: / bin / sh: impossible d'exécuter le fichier binaire

Marcin Fabrykowski
cat aa.c

#include<stdio.h>
#include<unistd.h>
int main (){

        int ret=0;
        char *argv[] = {"/bin/bash", "-c","/bin/sh",'\0'};
        ret=execv(argv[0], argv);

        printf("ret: %d \n",ret);
        return 0;
}

gcc aa.c -o aa

./aa 
sh-4.4$ 

et ... qu'en est-il juste:

#include<stdio.h>
#include<unistd.h>
int main (){

    int ret=0;
    char *argv[] = {"/bin/sh",'\0'};
    ret=execv(argv[0], argv);

    printf("ret: %d \n",ret);
    return 0;
}

Articles connexes