【问题标题】:Want to run script file using system call in android NDK想在android NDK中使用系统调用运行脚本文件
【发布时间】:2012-03-27 08:26:35
【问题描述】:

我想使用 Native C 程序在 android Shell 上运行脚本文件。

我尝试使用system 函数,但它不起作用。

result = system("sh ./test.sh");

LOGD("result is %d", result);

系统命令返回0表示它没有成功执行脚本文件。

test.sh 包含

echo "test...."

运行此系统调用时,Android NDK 应用程序无法打印 test....

甚至任何脚本都无法使用系统调用启动。我检查了 10 多个不同的脚本。

test.sh 拥有777 权限

任何帮助将不胜感激。

【问题讨论】:

  • 应该是 result = system("sh ./test.sh");说黑斜线前的点
  • @blackbelt 这个命令直接起作用,为什么它在系统调用中不起作用

标签: android c android-ndk


【解决方案1】:

“sh”在哪里?什么是你的'。应用程序运行时的当前目录?试试:

result = system("/system/bin/sh /full/path/to/test.sh");

【讨论】:

  • test.sh 在我当前的目录中...我也厌倦了上面的命令,但它不起作用
  • 根据linux.die.net/man/3/system,如果system()返回0,则该命令有效,否则为-1。也许程序运行但它的输出由于某种原因没有显示?尝试使用写入文件的 shell 脚本(“echo test >> test1”),然后查看 test1 是否存在......
  • 我也试过这个选项,但它不起作用。我使用上面的命令使用 shell 脚本编写了一个文件。但使用此文件后文件不退出
  • 如果脚本需要输入怎么办?这种情况如何处理?
  • @BRUCE 也许是一个丑陋的解决方法,但您可以将该输入写入临时文件并运行包含“test.sh
【解决方案2】:

在这里,我在不同的帖子上得到了这个问题的答案。

Run Shell Script file On Android Embedded Device using System function in Android NDK

感谢大家的帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-10
    • 1970-01-01
    • 2016-11-01
    • 1970-01-01
    • 2016-01-02
    • 2011-06-23
    相关资源
    最近更新 更多