【问题标题】:system is returning error 127 when called from c++ in linux在 linux 中从 c++ 调用时系统返回错误 127
【发布时间】:2014-06-24 07:17:46
【问题描述】:

命令“am start -n packagename/.activityname”必须在 adb shell 中运行,并且要包含在 C++ 程序中

我在我的 C++ 程序中添加了 system("am start -n packagename/.activityname") 行,并且当程序在 adb shell 中运行时, 系统命令返回错误代码 127 并且 shell 命令未运行

使用的编译器:arm-linux-none-gnueabi-g++

当我使用 g++ 编译器时它的工作原理

是编译器的问题还是路径的问题?

【问题讨论】:

    标签: android linux system


    【解决方案1】:

    system() 实际上,在 /bin/sh 是 bash 版本 2 的系统上,具有 set-user-ID 或 set-group-ID 特权的程序无法正常工作,因为 bash 2 在启动 linux 时会放弃特权.die.net/man/3/system

    我用 execl("/system/bin/sh","sh","test.sh")

    代替了系统

    test.sh 有 am start -n packagename/.activityname 并且可以工作

    【讨论】:

    • execl 的调用错误。最后一个参数必须是NULL。因此,它应该是execl("/system/bin/sh","sh","test.sh",NULL)
    猜你喜欢
    • 2017-10-02
    • 2010-11-06
    • 2016-02-12
    • 2021-09-09
    • 2019-04-22
    • 1970-01-01
    • 2012-02-11
    • 2018-04-03
    • 1970-01-01
    相关资源
    最近更新 更多