我希望我的代码在 android 启动时自动运行。而且,我知道 init.rc srcipt 将在 android 启动时运行。所以,我决定将我的代码信息作为服务项添加到 init.rc .但不幸的是,它失败了。以下是我使用的步骤: 1. 我通过 ndk 的交叉编译器构建 server.c:server.c:
#include <stdio.h>
#include <sys/un.h>
#include <unistd.h>
#include <stdlib.h>
void sys_log(char* msg) {
FILE *fp;
time_t t;
if((fp=fopen("/data/server.log","a")) >=0)
{
t=time(0);
fprintf(fp,"%s at time: %s\n", msg, asctime(localtime(&t)) );
}
fclose(fp);
}
int main() {
printf("server begin!");
sys_log("server begin!");
)
我将以下行添加到 /init.rc 的末尾:
服务 socketserver /data/server oneshot
我重新启动android设备
我使用指令
cat /data/server.log
查看日志,但server.log中没有任何内容!我直接运行服务器。一切运行正常。日志和控制台都会提示我想要什么!
所以总而言之,我认为 init.rc 不会启动我构建的服务器。我的步骤正确吗?有任何想法吗?提前谢谢你的帮助!