我正在尝试执行从ac程序在Linux中启动新终端的命令sh,但我得到此错误/ bin / sh:/ bin / sh:当我使用execv()时,无法执行二进制文件结果用fork然后execv。 但当我尝试系统命令成功时,我怎么能用execv做这个命令?
工作:
int main (){
system("sh");
return 0;
}
不起作用:
int main (){
int ret=0;
char *argv[] = {"/bin/bash", "/bin/sh",NULL};
ret=execv(argv[0], argv);
printf("ret: %d \n",ret);
return 0;
}
此代码返回此错误: / bin / sh:/ bin / sh:无法执行二进制文件
答案 0 :(得分:2)
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$
和......仅仅是这样:
#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;
}