越狱开发-创建真正的后台程序(Daemon Process)
2015-08-08 00:30
597 查看
在网上搜索了一下如何在IOS上面实现Daemon Process,只有chrisalvares的博客中有过详细的描述,但是其博客中描述的较为复杂,
参考stackoverflow中的一个问答:
http://stackoverflow.com/questions/13345686/ios-daemon-app-will-not-start-jailbreak-how-to-debug
综合上面的实现方案,下面给出本人的实现:
IOS Daemon的实现分为两个部分,一个是守护程序的可执行文件,一个是描述可执行文件的plist。
可执行文件可以使用XCode来编写,普通的命令行程序就可以了,下面是本人的实现代码:
这里避免主线程结束,在runloop中添加了一个timer,这个timer什么事情也没有做,主要是避免runloop结束。
上面的主程序中,就可以在主线程中异步执行一些事件,本人的代码中所做的事情是向服务器每隔2s发送一个数字,这个数字累加。
下面是累加的结果:
编写这个控制台程序的时候,注意需要将工程的CPU架构设置为armv7,armv7s,不然会遇到 bad cpu type的错误。
第二个部分是plist,plist中描述了守护程序的位置,已经启动的参数,然后将这个plist拷贝到/System/Library/LaunchDaemons/中
下面是程序的plist:
参考资料:
http://blog.csdn.net/yiyaaixuexi/article/details/8293020
注:请不要利用上面博客中的代码、用于非法目的。博客中思路仅供学习研究IOS系统实现,提高IOS开发技能。
参考stackoverflow中的一个问答:
http://stackoverflow.com/questions/13345686/ios-daemon-app-will-not-start-jailbreak-how-to-debug
综合上面的实现方案,下面给出本人的实现:
IOS Daemon的实现分为两个部分,一个是守护程序的可执行文件,一个是描述可执行文件的plist。
可执行文件可以使用XCode来编写,普通的命令行程序就可以了,下面是本人的实现代码:
#import <Foundation/Foundation.h> #import "NetworkTools.h" #import "TSLogger.h" int main(int argc, const char * argv[]) { @autoreleasepool { // insert code here... NSLog(@"Hello, World!, %@",[NetworkTools ipAddr]); [[TSLogger shanreInstance] connect]; NSTimer *timer = [NSTimer timerWithTimeInterval:5 target:[TSLogger shanreInstance] selector:@selector(beat:) userInfo:nil repeats:YES]; [[NSRunLoop mainRunLoop] addTimer:timer forMode:NSRunLoopCommonModes]; [[NSRunLoop mainRunLoop] run]; while (YES) { [[NSRunLoop mainRunLoop] runUntilDate:[NSDate distantFuture]]; } } return 0; }
这里避免主线程结束,在runloop中添加了一个timer,这个timer什么事情也没有做,主要是避免runloop结束。
上面的主程序中,就可以在主线程中异步执行一些事件,本人的代码中所做的事情是向服务器每隔2s发送一个数字,这个数字累加。
下面是累加的结果:
编写这个控制台程序的时候,注意需要将工程的CPU架构设置为armv7,armv7s,不然会遇到 bad cpu type的错误。
第二个部分是plist,plist中描述了守护程序的位置,已经启动的参数,然后将这个plist拷贝到/System/Library/LaunchDaemons/中
下面是程序的plist:
参考资料:
http://blog.csdn.net/yiyaaixuexi/article/details/8293020
注:请不要利用上面博客中的代码、用于非法目的。博客中思路仅供学习研究IOS系统实现,提高IOS开发技能。
相关文章推荐
- 劫持系统函数system
- java学习笔记——String类
- python开发_counter()
- 下拉框选择效果的实现原理
- 位操作基础篇之位操作全面总结
- 动画延迟消失
- JavaScript高级程序设计 读书笔记 第二章
- 课后作业 06 -- 小数后几位精确判断并输出
- 黑马程序员--多线程总结2--java
- 《Objective-C基础教程》第5章 复合
- Leetcode # 103 Binary Tree Zigzag Level Order Traversal
- web api 参数绑定
- java学习笔记——内部类
- 在寝室的追忆与思考
- python开发--random
- 导航控制器
- 3.Kali 1.0 / 2.0 安装中文输入法(谷歌pinyin + 其他)
- 编译器编译优化---常量传播和常量折叠
- php会话管理
- poj3614 优先队列