gpt4 book ai didi

c - 从 execv 启动终端 (sh) 返回错误 :/bin/sh:/bin/sh: cannot execute binary file

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:04:40 28 4
gpt4 key购买 nike

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

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com