在阅读源码的过程中,发现找不到fork函数的定义。后来在linux/init/main.c中找到了这样一条语句static inline _syscall0(int,fork)原来这里就是fork函数的定义。系统在linux/include/unistd.h有一个宏定义。#define _sysca...
分类:
系统相关 时间:
2015-03-17 13:53:26
阅读次数:
165
服务器端未处理高并发请求通常采用如下方式:
多进程:通过创建多个进程提供服务
多路复用:通过捆绑并统一管理 I/O 对象提供服务
多线程:通过生成和客户端等量的线程提供服务
多进程服务器端#include pid_t fork(); // 成功返回进程 ID, 失败返回-1fork函数将创建调用的函数副本。子进程将使用新的内存空间复制当前函数的环境。
父进程:函数返回子进程ID...
分类:
其他好文 时间:
2015-03-16 23:16:58
阅读次数:
408
[android 上的API函数钩子,利用CydiaHook实现](http://www.yinqisen.cn/blog-407.html) 发布将近一年了,最近发现还是有些人需要的,github上也有些人fork了。 例子代码,发布在github上,地址: ### CydiaHook ...
分类:
移动开发 时间:
2015-03-16 17:56:51
阅读次数:
157
僵死进程: 父进程没有等待子进程,wait() 子进程会变成僵死进程。int main(int arg, char *args[]){ pid_t pid = fork();//调用fork产生一个子进行 int status; if (pid == -1) { printf("fork...
分类:
其他好文 时间:
2015-03-16 12:27:49
阅读次数:
134
一、说明 异步加载就是把消耗程序时间比较大的加载操作放到其他线程中,待加载完毕后通过回调函数的方式通知主线程。addImageAsync函数实现(Cocos2dx 3.3)Link:http://codepad.org/UuNcXMqq[raw code|fork]void TextureCach....
分类:
其他好文 时间:
2015-03-14 18:11:58
阅读次数:
231
僵尸进程处理1)通过忽略SIGCHLD信号,避免僵尸进程 在server端代码中添加 signal(SIGCHLD, SIG_IGN); 2)通过wait/waitpid方法,解决僵尸进程signal(SIGCHLD,onSignalCatch);
void onSignalCatch(int signalNumber)
{
wait(NULL);
}3) 如果多个客户端同时...
分类:
其他好文 时间:
2015-03-14 17:05:09
阅读次数:
225
1.僵尸进程与孤儿进程
僵尸进程:如果子进程先于父进程退出,此时子进程便成为一个尸体;此前,如果父进程没有调用wait等相关系统调用,那么子进程便成为僵尸进程.
孤儿进程:如果父进程先于子进程退出,那么子进程变成为孤儿进程,将被init进程领养.
2.进程相关数据结构
进程控制块PCB:保留了进程运转时所需要的全部信息,是进程表中的一个entry.
当以fork()系统调用建立一个新的进程后,核心进...
分类:
系统相关 时间:
2015-03-14 11:02:12
阅读次数:
184
Linux exec() Hook Risk、Design-Principle In Multi-Threadeed Program
分类:
系统相关 时间:
2015-03-12 18:53:19
阅读次数:
325
1.进程与线程 1)用户空间角度: 进程:fork()创建进程,在创建时,重新申请了内存空间,copy了父进程的所有信息。 线程:pthread_create()创建进程时,只申请自己的栈空间。 2)内核空间: 对内核空间,两者都有自己的pid,因此内核空间不区分。2.基本函数: 1)创...
分类:
编程语言 时间:
2015-03-12 00:48:58
阅读次数:
243
1. 用户态和内核态的概念区别
究竟什么是用户态,什么是内核态,这两个基本概念以前一直理解得不是很清楚,根本原因个人觉得是在于因为大部分时候我们在写程序时关注的重点和着眼的角度放在了实现的功能和代码的逻辑性上,先看一个例子:
1)例子
void testfork(){
if(0 = = fork()){
printf(“create new process succe...
分类:
系统相关 时间:
2015-03-10 19:24:38
阅读次数:
171