11 2014 档案
摘要:在Flask中处理请求时,应用会生成一个“请求上下文”对象。整个请求的处理过程,都会在这个上下文对象中进行。这保证了请求的处理过程不被干扰。处理请求的具体代码如下: 在Flask 0.9版本之前,应用只有“请求上下文”对象,它包含了和请求处理相关的信息。同时Flask还根据werkzeug.loca
阅读全文
摘要://无名信号量的常见用法是将要保护的变量放在sem_wait和sem_post中间所形成的临界区内,这样该变量就会被//保护起来,例如:#include #include #include #include #include int number; // 被保护的全局变量sem_t sem_id...
阅读全文
摘要:/*系统建立IPC通讯(如消息队列、共享内存时)必须指定一个ID值。通常情况下,该id值通过ftok函数得到。ftok原型如下:key_t ftok( char * fname, int id )fname就时你指定的文件名(该文件必须是存在而且可以访问的),id是子序号,虽然为int,但是只有8个
阅读全文
摘要:C++居然能用父类指针(里面存的也是父类)调用子类(子类独有的)函数? c++ 昨天问另外一个问题的时候, 今天早上有人回复给出了这样一段代码, 我试着运行了一下, 结果却大大出乎我的意料 : class Father { public: virtual void func1() { std::co
阅读全文
摘要:#include#includevoid main(){int p1,p2,i; while((p1=fork())==-1);//创建子进程p1,这个是一个技巧,直到创建子进程成功为止 if(p1==0) { lockf(1,1,0);//加锁第一个参数为stdout(标准输出设备描述...
阅读全文
摘要:在一般情况下,升级服务器端应用,需要将应用源码或程序包上传到服务器,然后停止掉老版本服务,再启动新版本。但是这种简单的发布方式存在两个问题,一方面,在新版本升级过程中,服务是暂时中断的,另一方面,如果新版本有BUG,升级失败,回滚起来也非常麻烦,容易造成更长时间的服务不可用。 为了解决这些问题,人们
阅读全文
摘要://5.生产者消费者问题#include #include #include #include #define MAX 50 #define BUFSIZE 10 //仓库的大小int buf[BUFSIZE]={0}; int in=0; int out=0; sem_t...
阅读全文
摘要:当有多个子进程的SIGCHLD信号到达父进程的时候,如果父进程用wait等待,那么父进程在处理第一个达到的SIGCHLD信号的时候,其他的SIGCHLD信号被堵塞,而且信号不被缓存,这样就会导致信号丢失,这样会产生很多的僵尸进程。。解决办法是父进程用waitpid来等待子进程信号。。。正好看到有人问...
阅读全文
摘要:本文讲的是关于wait和waitpid两者的区别与联系。为避免僵尸进程的产生,无论我们什么时候创建子进程时,主进程都需要等待子进程返回,以便对子进程进行清理。为此,我们在服务器程序中添加SIGCHLD信号处理函数。 客户端断开连接后,服务器端存在大量僵尸进程。这是由于服务器子进程终止后,发送SIGC...
阅读全文
摘要:#include #include int main(){ pid_t pid = fork(); switch(pid) { case -1: perror("fork failed"); exit(1); case 0: { pid...
阅读全文
摘要:Linux 进程间通信(posix消息队列 简单)实例详情见: http://www.linuxidc.com/Linux/2011-10/44828.htm编译:gcc -o consumer consumer.c -lrtgcc -o producer producer.c -lrt/* * *...
阅读全文
摘要:IPC通信:Posix消息队列 消息队列可以认为是一个链表。进程(线程)可以往里写消息,也可以从里面取出消息。一个进程可以往某个消息队列里写消息,然后终止,另一个进程随时可以从消息队列里取走这些消息。这里也说明了,消息队列具有随内核的持续性,也就是系统不重启,消息队列永久存在。创建(并打开)、关闭、...
阅读全文
摘要://这个程序可以产生僵尸进程#include #include #include #include#includeint main(int argc , char **argv){ //signal(SIGCHLD, SIG_IGN); 如果将这行代码加上将不会产生僵尸进程 int id; id...
阅读全文
摘要:#include #include #include#includeint main(void) { //signal(SIGCHLD, SIG_IGN); int i=0; printf("i son/pa ppid pid fpid\n"); //ppid指当前...
阅读全文
摘要:#include #include #includeint main(void) { signal(SIGCHLD, SIG_IGN); //一般来说在做并发服务器的时候,都要将这个加上!可以防止因为子进程退出时,父进程没时间处理,而产生僵尸进程! int i=...
阅读全文
摘要:#include #include #include #include#includeint main(int argc , char **argv){ int id; id=fork(); if(id0) { printf("I'm in parent process%d\n",getpi...
阅读全文
摘要:#include #include #include #include#includeint main(int argc , char **argv){signal(SIGCHLD, SIG_IGN); int id; id=fork(); if(id0) { printf("I'm in ...
阅读全文
摘要:孤儿进程与僵尸进程[总结]1、前言 之前在看《unix环境高级编程》第八章进程时候,提到孤儿进程和僵尸进程,一直对这两个概念比较模糊。今天被人问到什么是孤儿进程和僵尸进程,会带来什么问题,怎么解决,我只停留在概念上面,没有深入,倍感惭愧。晚上回来google了一下,再次参考APUE,认真总结一下,...
阅读全文
摘要:Linux 系统中僵尸进程Linux 系统中僵尸进程和现实中僵尸(虽然我也没见过)类似,虽然已经死了,但是由于没人给它们收尸,还能四处走动。僵尸进程指的是那些虽然已经终止的进程,但仍然保留一些信息,等待其父进程为其收尸。僵尸进程如何产生的?如果一个进程在其终止的时候,自己就回收所有分配给它的资源,系...
阅读全文
摘要:#include #include #include #include#include int main() { pid_t p1,p2,pr; int i; for(i=0;i0) printf("I catched a child process with pid of %d...
阅读全文
摘要:**************************************************************************************************posix 信号量信号量是一种是一种用于提供不同进程间或一个给定进程的不同线程间同步手段的原语。本书讨论...
阅读全文