ndk开发中需要用到 命令获取一些参数信息,目前知道的是有两种方法
popen
system
popen发现在小米商店上不了架,但是system在Android下无法写入文件。
比如'ps > /sdcard/.log' 运行后可以发现'.log'文件已经创建 但是文件内并没有任务信息。
具体代码:
FILE *fp;
char cmd[MAX];
char dir_path[MAX];
sprintf(dir_path, "/sdcard/.log");
sprintf(cmd, "ps > %s", dir_path);
int status;
sighandler_t old_handler;
old_handler = signal(SIGCHLD, SIG_DFL);
status = system(cmd);
signal(SIGCHLD, old_handler);
if(status < 0){
DEBUG_PRINT("cmd: %s\t error: %s", cmd, strerror(errno));
}
fp = fopen(dir_path, "r");
if (fp) {
while (fgets(line, MAX, fp)) {
process_count ++;
DEBUG_PRINT("msg:%s, len:%d", line, strlen(line));
}
}
fclose(fp);
黄舟2017-04-17 14:21:12
我覺得應該不是因為使用了popen這個
KSWeb這種集成了Nginx/PHP/MySQL的Android應用不一樣能上谷歌商店.
Java的Runtime.getRuntime().exec()本質上是fork進程,
Android的root用戶運行的受精卵進程zygote本質也是fork,
難道因為fork了進程就上不了架,我覺得不可能.
小米商店應用下架都沒有回饋說明麼?
GNU libc裡popen底層是Unix Standard Header(unistd.h)裡的execve.