在工作中经常碰到需要写一些多进程/多线程的测试程序,用来测试接口的性能。本文将会从零开始一点点增加代码,最终完成一个简易的多进程测试程序编写。该程序支持实时打印测试进结果和最终测试结果的统计。

同时,本文还涵盖了以下知识点,可以作为学习参考:

  • 使用getopt_long()处理命令行选项和参数
  • 使用fork()wait()处理多进程
  • 使用sigaction()配合alarm()处理定时信号SIGALRM
  • 使用shmget()shmat()shmdt()shmctl()等通过共享内存进行进程间通信
  • 使用sigaction()捕获SIGINTSIGQUIT信号,在程序终止前做共享内存清理工作
阅读全文 »

Tag Plugin 是一种使 Hexo 支持特殊样式内容的方法。例如,我们无法在标准 Markdown 中显示具有自定义尺寸的图像。然后我们可以使用标签插件来解决它。 Hexo 有很多可以帮助用户的标签。 Hexo 还具有主题接口,使主题能够创建自己的标签。

阅读全文 »

1 题面

编写类似cp(1)的程序,它复制包含空洞的文件,但是不将字节0写到输出文件中去。

2 基本思路

  • 首先要搞清楚空洞的性质以判断一个文件是否有空洞,以及空洞的位置
  • 知道了空洞的位置之后,读到源文件中的空洞部分时,在目标文件中lseek相应的长度
阅读全文 »

题面

编写与dup2功能相同的函数,要求不调用fcntl函数,并且要有正确的出错处理。

基本思路

不能用fcntl,能够返回一个文件描述符的只有opendup。而open会创建一个新的文件表项,返回的fd指向新的文件表项,与dup2的表现不符。dup基本能满足要求,但是返回的是最小的可用fd,需要进一步操作满足要求。另外需要自己添加错误处理,以及处理oldfd与newfd相等的情况等。具体地,

阅读全文 »

Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

阅读全文 »