我已经很久没用过 C 了,所以对于这个简单的问题我深表歉意。
我正在 armeabi-v7a 设备上使用 GPIO。我需要从 Android 应用程序中将 GPIO 接口(interface)导出到用户空间,我正在尝试从 JNI 库中这样做。
要从终端执行此操作,我只需运行 echo 199 >/sys/class/gpio/export
但我需要从 JNI 来做:(
我目前的尝试看起来像这样(有一些错误处理),但不起作用:
JNIEXPORT jboolean JNICALL Java_com_rnd_touchpanel_LED_exportGreen
(JNIEnv * je, jclass jc)
{
freopen("/sys/class/gpio/export", "w+", stdout);
printf("198");
fclose(stdout);
return JNI_TRUE;
}
然后我意识到导出实际上是二进制的,而不仅仅是一个文件,而且我忘记了如何生成新进程并向它们发送输入等等。有没有人可以唤醒我的内存?谢谢!
最佳答案
如果你只是在写一个文件,没有必要重定向 stdout
-- 只需用 fopen(3)
打开文件,用 fprintf(3)
写入它,并使用 fclose(3)
关闭它。
如果您需要使用给定的标准数据执行另一个流程,您有几个选择:
关于c - 如何将子进程的标准输出重定向到标准输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14346650/