0

我需要有关如何使用 Jni 编辑系统的示例代码。我需要在 /sys/class/gpio/gpio41/value 位置编辑文件

我尝试了这些代码,但它不起作用。

#include <jni.h>
#include <string.h>
#include <errno.h>
#include <unistd.h>
#include <fcntl.h>



 jstring
       Java_com_example_hellojni_HelloJni_stringFromJNI( JNIEnv* env,
                                              jobject thiz )
 {

int fd ;
    char gpio_path[30];
    sprintf(gpio_path,"/sys/class/gpio/gpio41/value");



    fd = open(gpio_path, O_RDWR | O_NONBLOCK );

        write(fd, "1", 2);


    close(fd);



return (*env)->NewStringUTF(env, gpio_path);

}

4

2 回答 2

1

一般来说,出于安全问题,sysfs 文件在 android 中是不可写的。

特定应用程序可以是可写的,具有合适的 uid,例如系统、媒体、图形等。

请参阅https://android.googlesource.com/platform/cts/+/master/tests/tests/permission/src/android/permission/cts/FileSystemPermissionTest.java并查看 testAllFilesInSysAreNotWritable() 方法。

于 2013-02-13T06:16:05.020 回答
1

授予文件执行命令的权限

chmod 777 /sys/class/gpio/gpio41/value

有效................

于 2013-02-14T04:39:28.543 回答