TypeCodes

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 …

- 阅读剩余部分 -

Linux使用KILL 0检测进程是否存在

之前遇到过kill( pid, 0 )的情况,由于平常没注意到kill函数的形参为0的情况,不知道它的作用。后面用man 2 kill命令查看了下kill函数的说明,发现可以用来检测进程的存在情况。

man 2 kill查看关于形参0的说明

1 关于kill 0的说明1

从上图DESCRIPTION区域的文字可以看出,kill函数中的形参sig是0的话,那么不会向pid进程发送任何信号,但是仍然会继续检测错误 …

- 阅读剩余部分 -

vsnprintf字符串格式化输出实例:日志中打印程序名和行号

在Linux C/C++程序中打印日志时,可能会由于需要打印未知个数的变量参数,那么vsnprintf函数就排上用场了。这里使用一个简单的C程序例子,演示在打印源程序文件名和该打印函数所在的行号的同时,使用vsnprintf函数打印个数未知的参数变量。

1 完整程序

代码比较简单,如果需要把内容打印在日志文件中的话,还需要调用文件处理函数。为了便于理解,这里直接把内容输出到控制台上了。需要说明的三个地方:

1 …

- 阅读剩余部分 -

一个sigprocmask和sigsuspend函数的综合应用

在Linux服务端后台开发中,经常会用到信号处理函数:sigprocmasksigsuspend。这篇文章主要通过一个综合实例演示如何使用sigprocmask函数屏蔽目标信号(信号掩码)以及sigsuspend函数挂起进程。

Linux中编译执行sigprocmask_sigsuspend程序

1 sigprocmask和sigsuspend函数的说明

关于sigprocmask函数的说明:

头文件:    #include <signal.h>
函数:     int sigprocmask …

- 阅读剩余部分 -

Linux TCP通信出现CLOSE_WAIT后导致服务端进程挂掉

前文中讲述了Linux服务端TCP通信出现CLOSE_WAIT状态的原因,这篇文章主要通过一个实例演示它个一个“恶劣”影响:直接使服务端进程Down掉。

CentOS服务端建立监听端口

1 CentOS服务端建立监听端口

如上图所示,在虚拟机CentOS7服务器(192.168.1.178)中打开一个终端界面,建立8000端口的监听服务(PID …

- 阅读剩余部分 -