我正在尝试从 c 程序执行在 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: 无法执行二进制文件
最佳答案
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;
}
关于c - 从 execv 启动终端 (sh) 返回错误 :/bin/sh:/bin/sh: cannot execute binary file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49475237/