摘要:当多个进程打开同一个文件写入日志的时候,OPEN时指定了O_APPEND参数,UNIX能保证这个操作是原子的,程序不需要自己加锁/*log1.c*/#include<stdio.h>#include<string.h>#include<fcntl.h>#include<unistd.h>int Max = 300;int main(){ int i; int fd; fd = open("1.log",O_WRONLY | O_APPEND); for(i=0;i<Max;i++) { char msg[100]; sp
阅读全文
摘要:http://www.openapis.net/Help.EVERNOTEbaseThriftdzopenAPI.ashx在2007年当我们开始计划Evernote服务的时候,我们就知道在发布服务的那一天就需要同时支持瘦客户端(象浏览器)和胖客户端。这一点促使我们在设计web用户界面之前就开始思考远程协议和客户端访问API接口,而不是拖到几个月之后将API接口架在已经存在网站服务上。我们的应用对API访问接口提出了下面的需求:1、跨平台。当我们08年2月份发布的时候,我们产品代码有服务器端JAVA、客户端是Win32(包括WinMobile) C++、客户端Obj-C Cocoa。2、二进制数
阅读全文
摘要:原文:http://www.eefocus.com/xuefu2009/blog/10-03/187348_f456a.html包含文件:#ifndef__TIME_T#define__TIME_T /*避免重复定义time_t*/typedef long time_t; /*时间值time_t 为长整型的别名*/#endif既然time_t实际上是长整型,到未来的某一天,从一个时间点(一般是1970年1月1日0时0分0秒)到那时的秒数(即日历时间)超出了长整形所能表示的数的范围怎么办?对time_t数据类型的值来说,它所表示的时间不能晚于2038年1月18日19时14分07秒。为了能够表示更
阅读全文
摘要:http://www.apuebook.com/可以下载源码src.tar.gz修改配置文件编辑源码解压生成的apue.2e文件夹下的Make.defines.linux修改WKDIR=/home/var/apue.2e为你的apue.2e目录,比如我的apue源码解压在/usr/local,那我就改为:WKDIR=/usr/local/apue.2e然后进入apue.2e/std 目录,编辑linux.mk。修改里面所有的nawk为awk。最后返回apue.2e目录,执行make命令。解决编译错误getenv1.c:4: error: ‘ARG_MAX’ undeclared here (n
阅读全文
摘要:http://hi.baidu.com/snowhilloldman/blog/item/a26830dd76b768205882dd30.html照理安装一个库这么简单的东东不应该写一篇垃圾文章,只是,我的真的很痛苦,希望看官们理解!先下载这个库吧:(点了以后文件名会自动变成rabbitmq-c-aafba2c665b5.tar.gz)http://hg.rabbitmq.com/rabbitmq-c/archive/tip.tar.gz这个库的最后更新时间是2010-04-20,姑且命名其版本为:rabbitmq-c-20100420再下载另一个库:(点了以后文件名会自动变成rabbitm
阅读全文
摘要:apue里说匿名管道只能在父子进程里使用。如果两个没有关系的进程要通信,就只能使用命名管道,最简单的代码这里:pwrite.pyimport osfd = os.open('pipetest',os.O_NONBLOCK | os.O_CREAT | os.O_RDWR)os.write(fd,"hello")pread.pyimport osfd = os.open('pipetest',os.O_RDONLY)s = os.read(fd,5)print s
阅读全文
摘要:web程序需要给IPHONE手机推送消息,移动端同事写好了一个LIB,但是这个LIB使用的是阻塞IO,在APPLE服务器返回前程序是阻塞的,他们用了多线程来解决这个问题,但是webpy运行在apache里,无法进行线程管理,所以就迫切需要一个异步的机制来解决这个问题,希望做到需要发送消息时。调用一个函数,把数据扔进管道或者消息队列后就立即返回,也不管数据是否真的出去了,它相当于生产者,再有一个程序从管道或者队列中读取,进行实际的发送,相当于消费者但是python似乎只封装了IPC(UNIX/LINUX平台进程通信规范)的匿名管道,命名管道的API,并无消息队列,而且管道似乎不易操作,因此想使用
阅读全文
摘要:(一)基本概念RabbitMQ是流行的开源消息队列系统,用erlang语言开发。我曾经对这门语言挺有兴趣,学过一段时间,后来没坚持。RabbitMQ是AMQP(高级消息队列协议)的标准实现。如果不熟悉AMQP,直接看RabbitMQ的文档会比较困难。不过它也只有几个关键概念,这里简单介绍。RabbitMQ的结构图如下:几个概念说明:Broker:简单来说就是消息队列服务器实体。Exchange:消息交换机,它指定消息按什么规则,路由到哪个队列。Queue:消息队列载体,每个消息都会被投入到一个或多个队列。Binding:绑定,它的作用就是把exchange和queue按照路由规则绑定起来。Ro
阅读全文