2019-11-24
JNI读取文件:
首先要申请权限
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
然后,JNI的默认路径是/,根目录一般都是没有权限,你一般要用存储卡路径,比如我的手机是 /storage/emulated/0/new.txt
2019-11-25
之前得出的结论是JNI不能fork出子进程,当前得出这个结论是因为debug没有进子进程。
今天突发奇想,我在子线程里面创建文件,发现真的创建了,原来JNI是支持fork的,只是debug没有进去而以。
2019-12-14
说2点。
jni进行socket编程,是需要安卓网络权限的。好奇宝宝,不知道安卓是怎么实现的??感觉linux好像没有网络权限的说法的吧。
其一,犯的是java上的错,本来我用的是bufferedWriter去write的,然后居然调的是OutputStream的flush,居然没生效,浪费了我好多时间。以后切记,高层的wirte要调用高层的flush
2019-12-15
c语言 socket write之后,数据在缓冲区里,并没有发出去,我再调一次,就把前面的推送出去了。
char *req = "GET http://kan.2345.com/ HTTP/1.1 "; int k = write(cfd, req, strlen(req)); int k2 = write(cfd, req, strlen(req));
想找一个flush方法,一直没有找到,或者想要一个没缓存的设置。没成功,
后杰找书本,有一句
int on = 1; setsockopt(cfd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on));
试一下,真的成了。这句话书中说是“快速回收socket”,感觉这个说明应该和 flush没关吧,不过对我来说有效果。
2019-12-22
int k = 90; //__android_log_print(4, "##############", "年龄:" + 90); 报错,编译不通过 __android_log_print(4, "##############", "年龄:%d", k);