System()在使用arm-none-linux-gnueabi-g++编译时不会执行

system() not executed when compiled with arm-none-linux-gnueabi-g++

本文关键字:编译 执行 arm-none-linux-gnueabi-g++ System      更新时间:2023-10-16
#include <stdio.h>
#include <stdlib.h>
int main()
{ 
    printf("Hellon");
    system("echo nikhil");   
    printf("Hellon");
    getchar();
    return 0;
}

当使用arm-none-linux-gnueabi-g++编译这段代码时,系统调用被跳过,所有其他指令都被执行,除了系统("echo nikhil")

为什么会发生这种情况,如何避免这个问题?

在/bin/sh是bash版本2的系统上,

system()实际上不能在具有set-user-ID或set-group-ID权限的程序中正常工作,因为bash 2会在启动时删除权限…http://linux.die.net/man/3/system

您可以尝试使用Exec命令http://linux.die.net/man/3/exec

使用execl("/系统/bin/sh"、"上海","test.sh")

test.sh是我的脚本文件,有echo nikhil