- 博客(14)
- 资源 (5)
- 收藏
- 关注
原创 memcached分析之网络模型
memcache源码分析之网络模型1.memcached使用libevent作为进行事件监听;2.memcached往管道里面写的内容不是fd,而是一个简单的字符。每一个worker线程都维护一个CQ队列,主线程把fd和一些信息写入一个CQ_ITEM里面,然后主线程往worker线程的CQ队列里面push这个CQ_ITEM。接着主线程使用管道通知worker线程:“我已经发了一个新客户给你,你去处理吧”
2015-12-29 10:19:21 505
原创 Cookie,Session验证机制
cookie可分为两类:会话cookie和持久cookie 会话cookie是一种临时cookie,在用户退出浏览器时,会话cookie就会被删除,也就是所说的sessionid,通过SESSION[′userinfo′]=_SESSION['user_info']=user;这样添加 主要用来判断用户的所有操作是否合法,避免用户每次都需要重新登录验证 新开一个浏览器,整个浏览器的所有窗口都公
2015-12-24 11:19:28 5823
原创 Libevent实例之系统密码保护程序实现
设计文档参考#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <shadow.h>#include <fcntl.h>#include <sys/types.h>#include <sys/stat.h>#include <sys/resource.h>#inclu
2015-10-12 15:56:44 680
原创 Libevent实例之系统密码保护程序设计
程序设计 程序实现自毁主程序:cloudsf 自毁监听程序:cloudsm 程序自启脚本:cloudst.sh 自毁脚本:destory.sh 恢复脚本:recovery.shlinux系统有被恶意篡改密码的情况,程序的目的就是通过实时监听linux系统密码是否被修改,在密码被修改的情况下,启动自毁程序 linux系统密码存放在/etc/shadow中,程序以守护进程运行,在程序首次在l
2015-10-12 15:41:51 1928
原创 Libevent时间管理
Libevent时间管理define evtimer_new(b, cb, arg) event_new((b), -1, 0, (cb), (arg))工作流程 1.设置超时值 static inline int event_add_internal(struct event *ev, const struct timeval *tv, int tv_is_absolute)
2015-09-25 09:39:01 1198
原创 Libevent信号event的处理
Libevent信号event的处理event_signal_map中数组元素的值它要么是信号值sig,要么是文件描述符fd,而event_signal_map要求的数组长度一定要大于slot。那么之后给定一个sig或者fd,就可以直接通过下标操作快速定位了。这是因为一个sig或者fd就对应在数组中占有一个位置,并且sig或者fd的值等于其在数组位置的下标值。把信号也转
2015-09-23 15:11:00 1631
原创 Libevent数据结构分析
Libevent数据结构分析:queue_head_t队列头#define TAILQ_HEAD(name, type) \ struct name { \ struct type *tqh_first; /* first element */
2015-09-18 15:34:25 1058
原创 Libevent工作流程
Libevent工作流程://使用默认的event_base配置 struct event_base *base = event_base_new(); struct event *cmd_ev = event_new(base, STDIN_FILENO,EV_READ | EV_PERSIST, cmd_cb, NULL); event_add(cmd_ev, NULL)
2015-09-16 09:25:14 1167
原创 RemoteFX+RDP8.0+hyper-v重定向智能卡,U盾问题
客户端:win8,rdp8.1,开启了remoteFX,服务端:win7(hyper-v虚拟机),升级了RDP8.0,开启了remoteFX重定向出现以下问题,直接上图:
2015-07-07 11:28:24 6436
原创 输入输出重定向问题
想实现 ./pipe args[1] args[2],使其实现管道的功能if ( pid == 0 ){ /* parent will exec av[2]*/close(pipe_in[1]);/* parent doesn't write to pipe */ close(pipe_out[0]); dup2(pipe_out[1],1);
2015-01-09 19:37:43 672
原创 exec系列函数使用
(1)int execl(const char *path, const char *arg, ......);(2)int execv(const char *path, char *const argv[]);(3)int execle(const char *path, const char *arg, ...... , char * const envp[]);
2015-01-06 14:59:42 724
原创 有关dup2(fd,1),复制文件句柄的问题
dup2(fd,1),将进程的标准输出重定向到文件的句柄,close(fd),关闭文件句柄,使用进程的标准出来作为文件的输入。fd=popen("ls","r"),得到进ls的内容到句柄fd,且fd是可读的方式实现方式/*父进程*/if(pid>0){close(pipe[1]);return fdopen(pipe[0],"r");}/*子进程*/cl
2014-12-23 20:34:05 1400
原创 RPC由客户端到服务器传递字符串的问题
const NAMELEN = 256;typedef string PATHNAME;struct write_buff {PATHNAME filename;PATHNAME write_buffer;};program FILE_PROG{ version FILE_VER{ int file_open(string)=1; string fi
2014-12-22 22:07:32 1594
Hue安装及配置
2014-12-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人