start terminal (sh) from execv return error : /bin/sh: /bin/sh: cannot execute binary file

start terminal (sh) from execv return error : /bin/sh: /bin/sh: cannot execute binary file

我正在尝试从 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;
}

此代码 return 此错误: /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",'[=10=]'};
        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",'[=11=]'};
    ret=execv(argv[0], argv);

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