簡體   English   中英

從execv啟動終端(sh)返回錯誤:/ bin / sh:/ bin / sh:無法執行二進制文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM