![](/img/trans.png)
[英]execv lauches a process using "/bin/sh -c",will there be a new process
[英]start terminal (sh) from execv return error : /bin/sh: /bin/sh: cannot execute binary file
我試圖執行命令sh從ac程序啟動Linux中的新終端,但我收到此錯誤/ bin / sh:/ bin / sh:當我使用execv()時無法執行二進制文件,並且與fork的結果相同然后執行。 但是當我嘗試成功執行系統命令時,如何使用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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.