11 2012 档案
摘要:linux下面每个进程会维护一个printf/scanf的缓冲区。 以printf为例,调用printf的时候,当缓冲区满,或者带有'\n'时,才会输出(当然程序退出是即使没有这两个条件也输出)。 除此之外,当遇到scanf调用时,也会先刷新缓冲区,printf调用中的内容就会被输出。 最后,可以调用fflush函数强制刷新缓冲区来输出缓冲区中的内容。 在多线程程序中尤其值得注意,fork时,缓冲区也被fork,要是之前缓冲区没有被刷新过的话,缓冲区中的内容依然存在,在子进程中再次调用printf就会出现自己不想要的输出。
阅读全文
摘要:离上篇一个简单的IPmsg程序源码分析(一)已经基本半个月(上篇最初发布在点点上面,后边纠结了一下还是选择了博客园),利用空闲的时间终于把源码的构架和一些细节基本都搞清楚了,总的来说是很简单的一个客户端。所以就只用这一篇文章全部说明吧。 整个程序的核心是几个全局变量: 1 typedef struct filenode filenode; 2 3 typedef struct command 4 { 5 unsigned int version; 6 unsigned int packetNo; 7 char senderName[NAMELEN]; 8 ...
阅读全文
摘要:前段时间把IPmsg协议自己翻译了一遍,虽然对最新协议理解了不少,但是质量惨不忍睹。好在友人找到一个日语八级的朋友相助,总算把协议弄出了个样子。于是着手开始之前找到的一个IPmsg程序的源码分析,源码来自这里。这是一个功能很简单的linux下面的IPmsg客户端。命令行操作,完成了IPmsg的消息,文件和文件夹的传送功能,与windows下面的其他客户端经验证基本兼容,只有收文件夹的时候有一些问题(同是linux平台则没有问题)。基本操作方式如下:12"Commands: help(h) list(ls) talk(tk) sendfile(sf)\n"\"Com
阅读全文
摘要:最近准备做一个自己的项目练手,系统的巩固一下自己最近学习的知识,网上找了一下,发现IPmsg(飞鸽传书)是个不错的选择:LINUX C/C++、多线程、线程间通信、QT。所以就决定做这个。 找了很多资料,决定从翻译协议开始,顺便熟悉协议,网上只能找到第9版的英文协议,最新的第十版只有日文,没办法,硬着头皮翻译日文吧。。 先吐槽一下google、bing、百度三家的翻译质量:google翻译英文很不错,日文感觉一般,bing是友人推荐,翻译日文质量在我意料之外,协议翻译基本也就是参考bing翻译的,google辅助。百度了就要坑很多了,翻译过程可以概述为:分词查字典。根本不做任何语法调整...
阅读全文

浙公网安备 33010602011771号