
c/c++
小慧慧_
从现在开始,记录下点滴
展开
-
关于localtime()函数在多线程中的core问题
生产上的程序在某天运行的过程中忽然core掉,gdb显示的core文件的堆栈信息如下:(gdb) where #0 0x0000003369832925 in raise () from /lib64/libc.so.6#1 0x0000003369834105 in abort () from /lib64/libc.so.6#2 0x0000003369870837 in原创 2017-02-09 20:51:29 · 2922 阅读 · 0 评论 -
linux 下源码安装gcc4.9.2
先在官网下载gcc-4.9.2.tar.bz2源码安装包解压源码包 tar -zxvf gcc-4.9.2.tar.bz2 ./configure --prefix=/usr/local/gcc --enable-bootstrap --enable-checking=release --enable-languages=c,c++ --disable-multilib...原创 2018-10-17 10:54:43 · 2720 阅读 · 0 评论 -
rabbitmq-c api详细说明
最近项目用到rabbit,客户端使用rabbitmq-c库,网上没有多少中文的说明,因此对使用到的函数做了总结:amqp_new_connection 函数作用:分配和初始化一个新amqp连接对象函数原型:amqp_connection_state_t amqp_new_connection(void);参数:无返回值:成功返回amqp连接对象,失败返回NULLamqp_...原创 2018-09-05 11:36:44 · 12310 阅读 · 1 评论 -
c++虚函数原理
c++有虚函数的类会有一张放有虚函数的地址的虚函数表,一维数组虚函数表可以被继承有虚函数的类被实例化以后在对象的开头有一个虚函数指针,指向类的虚函数表,如果子类重新实现了虚函数,那么子类就会有一张相同的虚函数表,子类的指针指向子类的虚函数地址,否则子类的虚函数指针还是指向父类的虚函数。当把子类对象赋值给父类的时候,调用的是子类对象虚函数指针指向的虚函数表里放的虚函数的地址。有多态运用...原创 2018-08-06 22:46:51 · 188 阅读 · 0 评论 -
c语言编译过程
c语言编译分为四步:预处理->编译->汇编->链接以下面的简单例子进行说明main.c:#include<stdio.h>#define DEBUG(str){printf("%s\n",(str))}int main(){#ifdef _DEBUGDEBUG("hello");#else printf("hello\n");#endifreturn 0;}1.预处理...原创 2018-06-27 23:09:14 · 263 阅读 · 0 评论 -
linux系统编程---进程间的通信
管道:只能传输无格式的字节流 单向,先进先出 seek是不起作用的 读的时候管道空默认阻塞 写的时候管道满默认阻塞 只能单向通信,一个读,一个写 有名管道(fifo) 任何两个进程间都可以通信 node节点在磁盘上,内容还是在内存里,也很快 无名管道(pipe) 只能父子进程间通信 类似文件的操作,但是不是真的文件,不与磁盘交互,非常快 信号 unix 最早的通信方式 异步通信...原创 2018-06-25 00:18:43 · 185 阅读 · 0 评论 -
linux系统编程---多进程
最近发现每天都在写业务代码,好多基础的东西都忘了,今天开始每天复习一点基础知识。今天先复习多进程进程是具有一定功能的程序的一次运行活动,是系统资源分配和调度的基本单位孤儿进程:父进程退出,子进程没有退出,被init进程收养init进程:是内核启动后运行的第一个进程,是所有孤儿进程的子进程。init进程会循环的wait退出的孤儿进程,因此孤儿进程不会变成僵尸进程,不会造成危害僵尸进程:进程结束了,但...原创 2018-06-22 00:32:41 · 361 阅读 · 0 评论 -
c语言可变参宏函数实现打印Debug信息
#ifndif__PRINT#define __PRINT(fmt,arg...) \do \{ \char buf[1024]; \snprintf(buf,1024,fmt,##arg); \printf("%s\n",buf);\}while(0);#endif#ifndef DEBUG#define DEBUG(fmt,##arg)原创 2017-03-09 23:37:54 · 931 阅读 · 1 评论 -
gdb 反汇编.c程序
vi test.cgcc test.c -o testgdb testdisas原创 2017-03-08 10:21:49 · 600 阅读 · 0 评论 -
c++笔记
一.socket1.listen(int fd,int backlog).backlog表示已经完成3次握手而等待accept的最大个数。listen调用后,内核会建立2个队列,一个是syn队列,表示接受的请求但还未完成3次握手的连接,一个是accept队列,表示完成3次握手的队列。2.accept(int fd,struct addr,socklen_t *len).会从accept队列中...转载 2018-11-25 23:54:39 · 860 阅读 · 0 评论