I am LAZY bones?
AN ancient AND boring SITE

2009年 06月 的归档

linux进程间通信──消息队列

linux自古以来就是一个多任务多用户的操作系统,所以linux的进程间通信(Inter-Process Communication──IPC)就显得非常重要了。
IPC是一种标准的Unix通讯机制,目前有以下几种通讯方式:管道(Pipe)、信号量(Semaphore)、互斥体(Mutex)、共享内存(Shared Memory)和消息队列(Message Queue),当然也有其他的方式,比如文件系统和dbus等。
今天我就来介绍一种简单实用的进程间通信方式:消息队列(Message Queue)。
首先说说消息队列的优缺点:
1.消息队列只适用于单台主机的进程间通信,如果是不同主机,需要用socket等其他方式,也就不属于IPC的范畴了。
2.消息队列可以实现异步通信,这似乎是优点,但说是它缺点也是可以的:通讯往往不是实时的。
3.消息队列有大小限制,通常只用于小数据量的发送。系统对用户的大小限制可以通过 ulimit -q 命令进行查询。
4.消息队列可以实现阻塞调用和非阻塞调用。
5.实现简单,且可移植性好。

下面通过一个实例来进行说明,以下文件保存成 ipc_msg.c:

以上程序,实现了发数据到消息队列和从消息队列收取数据的功能。
第一个参数需要是一个整形数值,表示消息队列的Key;
第二个参数是一个长整形的数值,表示消息的Type,Key+Type 可以唯一确定一个先进先出的消息队列。
第三个参数如果是‘s’则把第四个参数发到指定消息队列,如果是‘r’则从指定消息队列收取消息,并打印。
另外,如果第二个参数是‘c’,则把Key对应的队列删除。
让我们来运行一下试试:

本文以GNU自由文档许可证发表.

趣站: lmgtfy

lmgtfy 这几个字母放在一起,估计没几个人能看出是什么意思,其实它就是 Let me google it for you 的缩写.
http://lmgtfy.com/ 就是这样一个简单而好玩的网站: 比如,如果有人论坛里问 li2z 是什么?然后你不是很想回答,想让他自己去google,你就可以给他这个链接,相信他一看就会明白了,哈哈.当然你还可以用网站内置的tinyurl接口实现url的压缩等.
网站的主人显然是个web2.0爱好者,因此,你还可以follow网站的twitter,或者观看实时搜索直播不过..真的是实时的么?

XP也很牛

几天前,据说微软要派人到我们公司查盗版系统(我就奇怪了,我们公司又不大,怎么就被盯上了呢?)…
哈哈,这对我倒是没啥大的影响,因为我平时都是用linux工作的.
但是我还是有装着个一个XP的,虽然很少用,基本上就是偶尔打几盘游戏.那我到底是删了XP还是留着呢?
干脆就让我来做个试验吧:我把XP的系统分区(NTFS格式)mount上,把windows目录和ntldr、NTDETECT.COM等记个文件都tar成了一个包…并删掉了,Documents and Setting和Program Files等几个目录换个名字.但是保留分区不动.
这样应该查不出的我windows了吧~
但是,几天过去了,也没看到微软的人来,看来又是忽悠忽悠咱老百姓的,今天我把那些文件都恢复了,tar包也解开,grub项加回去,再试着启动XP,居然还真能启动,哈哈~牛了~
不过有这么几个问题:
tar以后,删除再恢复的文件,丢失了 只读/隐藏 等属性.
tar完删除windows目录的时候,会有少数文件删不掉.可以mv改个名字,忽略掉.
这样以后的系统稳定性未知,没事还是别瞎试验了.

测试base64加密的文章

呃…在这个举国上下都非常紧张的敏感时期,很多博主(指目前还没被墙掉的博主)肯定都想说点啥而不敢说吧?
受lerosua之前用base64来写博文的启发,本文来探讨一个更加方便的加密方法.
lerosua的方法,缺点比较明显,就是对阅读者不够友好,linux用户还可以很方便地复制文字来base64 -d,win用户基本上都要打开一个在线解码base64的网站来解码了.于是我就想能不能把解码的功能放在同一个页面里,用户只需按一下按钮即可看到真实内容.
下面是演示:

点击查看全文 »

python用着太顺手了

(此文纯属自言自语,基本可以忽略,呵呵.)
python用着太顺手了,其实是很久以前就有这种感觉,最近印象比较深的一次就是在做Project Euler的第一题的时候,那题比较简单,要求1000以内所有能被3或5整除的自然数之和.这题其实用什么语言都不复杂,但是用python的话,只需要一行:

接近自然语言的表达看起来好舒服,而且也相当简洁.
然后今天,我又更新了一下gmbox,基本上把CLI重新写了一遍,又有同样的感觉了.gmbox的命令行,分交互式和非交互式两种,刚好用cmd和optparse两个内置模块轻松搞定.而且cmd模块支持欢迎界面/自定义提示符/readline库;optparse支持长短选项和混杂无序的选项,并自动生成帮助界面.真是太爽了.这两种模式加起来才140行左右的代码.去掉文件头,只有120行…
以后继续学习python.哈…