TypeCodes

Linux TCP客户端出现CLOSE_WAIT后进入死循环

前文中讲述了Linux服务端TCP的某个链路变成CLOSE_WAIT状态,然后由于客户端已经关闭了(发送了RST标志的报文),那么服务端如果继续向这个链路中写入数据的话就会收到SIGPIPE信号而终止,这篇文章主要通过客户端进入CLOSE_WAIT后由于收到服务端产生的RST标志报文进入死循环的情况。注:RST表示复位 …

- 阅读剩余部分 -

使用sed和awk查找和替换字符串处理Makefile文件(二)

前文中演示了使用awk和sed命令正则查找和替换Makefile文件的匹配内容,这篇文章依然使用这个Makefile文件作为awk和sed命令正则匹配查找、替换和删除操作。

1 功能需求

由于之前在BZ自己CenOS7中的C/C++工程部分Makefile文件在make clean操作时的语句可以优化,也就是可以把-$(RM) $(ULT_BIN)-$(RM …

- 阅读剩余部分 -

使用sed和awk查找和替换字符串处理Makefile文件(一)

《使用sed命令批量处理Makefile文件的脚本》文中使用sed命令对前文中的Makefile文件进行了替换、追加和删除操作,这篇文章通过使用sed和awk命令对该Makefile文件的某个字符串进行正则匹配查找以及替换。

1 功能需求

由于之前在BZ自己CenOS7中的C/C++工程部分Makefile文件有问题(CC变量被赋值为CC := g++),所以想写个shell脚本批量把Makefile文件出错的部分全部替换成CC := gcc

2 shell程序 …

- 阅读剩余部分 -

C++删除map容器中指定值的元素

map容器是C++ STL中的重要一员,平时会遇到删除map容器中value为指定元素的问题,例如删除所有字符串为"123"或者能整除3的元素。

1 map容器下的方法说明

由于map容器下的方法较多,这里只列举代码中用到的几个方法:

insert()方法:

1
2
3
4
5
6
//插入val到pos的后面,然后返回一个指向这个元素的迭代器 …

- 阅读剩余部分 -

自己实现inet_aton和inet_ntoa函数功能

之前遇到过要自己实现inet_atoninet_ntoa函数功能的问题,这里总结一下。

1 基本知识

网络字节序是大端模式,那么内存中的低地址存放的是数据的高位,内存中的高地址存放的是数据的低位。 inet_aton是将IPv4地址(点分法)转换成对应的十进制整数;而inet_ntoa是将十进制整数转换成对应的IPv4地址(点分法)。

2 …

- 阅读剩余部分 -

C语言删除无序整型数组中的重复元素及时间复杂度

遇到一个题,大概要求是写一个函数处理来去掉一个无序的整型数组(例如int i_arr[] = { 1, 2, 2, 3, 4, 2, 3, 5 };)中重复的元素,并返回最终的长度。

1 思路

看到这道题的时候,第一反应就是需要删除元素,然后联想到单链表。但是后面一想还是不划算 …

- 阅读剩余部分 -

UNIX环境高级编程(APUE)之单实例守护进程

在UNIX环境高级编程(APUE)中提到了守护进程的创建方法,思路很清晰,所以这里通过代码具体研究下。

UNIX环境高级编程(APUE)之单实例守护进程

1 完整程序:单实例守护进程

根据APUE的介绍,创建守护进程基本需要如下7个步骤。需要注意的是由于守护进程没有TTY(控制终端),所以代码中部分特意写上去的printf语句是不会输出到终端界面上的。

  1
  2
  3
  4
  5
  6
  7 …

- 阅读剩余部分 -