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;
}