![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++
tspangle
千里之行始于足下,
记录成长的点点滴滴
展开
-
linux系统编程之信号(六):信号发送函数sigqueue和信号安装函数sigaction
一,sigaction()#include int sigaction(int signum,const struct sigaction *act,struct sigaction *oldact));sigaction函数用于改变进程接收到特定信号后的行为。该函数的第一个参数为信号的值,可以为除SIGKILL及SIGSTOP外的任何一个特定有效的信号(为这两个信号定义转载 2013-09-25 15:09:55 · 775 阅读 · 0 评论 -
dlopen dlsym dlclose解析
1. 打开动态链接库: #include void *dlopen(const char *filename, int flag); 该函数返回操作句柄,如: void *pHandle = dlopen(strSoFilePath, RTLD_LAZY);2. 取动态对象地址: #include void *dlsym(原创 2014-09-24 11:13:25 · 985 阅读 · 0 评论 -
Linux动态库的编译与使用
Linux下的动态库以.so为后缀,我也是初次在Linux下使用动态库,写一点入门步骤,以便以后能方便使用。第一步:编写Linux程序库文件1.动态库接口文件转载 2014-09-24 11:31:55 · 590 阅读 · 0 评论 -
怎么成为一个软件架构师
怎么成为一个软件架构师 的确没想到随手写的东西有那么多的回复,不管怎样还是挺高兴的。在这里谢谢大家的关注了。其实做了这么多年的技术脑子里总会跳出很多的想法,但很少有时间静下来仔细地思考思考,写写博客也算是一种自我归纳和总结吧。 “软件架构师”这个名词也不知是什么时候进入我的脑中的,不过一直就很疑惑,总觉得和软件的Team Leader之间有些纠缠不清。不过以我的观点来看,软转载 2014-08-19 18:06:30 · 698 阅读 · 0 评论 -
用C++面向对象的方式动态加载so
这几天在写一个server,由于框架相同,仅仅是获取数据源的地方有区别,所以,研究了一下如何使用面向对象的方法来动态加载so。主要思想就是:1.通过一个函数能够获得一个基类的指针,这样在调用基类的函数的时候,就能自动调用子类的实现了。2.存储so对象的指针应该是外层类的一个static变量。详细还是看代码吧:1)首先定义一个公共的头文件,里面存储的基类的定义:(需要注意转载 2014-09-23 18:10:37 · 6373 阅读 · 0 评论 -
深入 char * ,char ** ,char a[ ] ,char *a[] 内核
C语言中由于指针的灵活性,导致指针能代替数组使用,或者混合使用,这些导致了许多指针和数组的迷惑,因此,刻意再次深入探究了指针和数组这玩意儿,其他类型的数组比较简单,容易混淆的是字符数组和字符指针这两个。。。下面就开始剖析一下这两位的恩怨情仇。。。 1 数组的本质 数组是多个元素的集合,在内存中分布在地址相连的单元中,所以可以通过其下标访问不同单元的元素。。 2 指针。转载 2014-08-13 18:31:01 · 412 阅读 · 0 评论 -
C/C++ 笔试、面试题
原创 2014-08-13 18:28:46 · 630 阅读 · 0 评论 -
C/C++ 笔试、面试题目大汇总
1.求下面函数的返回值(微软)int func(x) { int countx = 0; while(x) { countx ++; x = x&(x-1); } return countx; } 假定x = 9999。 答案:8思路:将x转化为2进制,看含转载 2014-08-13 18:19:28 · 1012 阅读 · 0 评论 -
C++回调函数调用Java接口抽象函数
项目中很多代码采用C++编写,配置界面则采用BS结构,使用Java语言进行设置。因此需要实现Java调用C++编写的函数库(dll文件或so文件),采用的技术为JNI(Java Native Interface),对于常用的调用方式在《The Java Native Interface Programmer's Guide and Specification》一书中有详细的描述,不在进行描述。本文转载 2014-08-20 15:48:53 · 1627 阅读 · 0 评论 -
浅谈 C++ 中的 new/delete 和 new[]/delete[]
在 C++ 中,你也许经常使用 new 和 delete 来动态申请和释放内存,但你可曾想过以下问题呢?new 和 delete 是函数吗?new [] 和 delete [] 又是什么?什么时候用它们?你知道 operator new 和 operator delete 吗?为什么 new [] 出来的数组有时可以用 delete 释放有时又不行?…如果你对这些问题都有疑问的话,原创 2014-09-04 10:52:24 · 551 阅读 · 0 评论 -
C/C++语言中闭包的探究及比较
这里主要讨论的是C语言的扩展特性block。该特性是Apple为C、C++、Objective-C增加的扩展,让这些语言可以用类Lambda表达式的语法来创建闭包。前段时间,在对CoreData存取进行封装时(让开发人员可以更简洁快速地写相关代码),我对block机制有了进一步了解,觉得可以和C++ 11中的Lambda表达式相互印证,所以最近重新做了下整理,分享给大家。0. 简单创建转载 2014-08-18 17:56:27 · 553 阅读 · 0 评论 -
char,short ,int ,long,long long,unsigned long long数据范围
char -128 ~ +127 (1 Byte)short -32767 ~ + 32768 (2 Bytes)unsigned short 0 ~ 65535 (2 Bytes)int -2147483648 ~ +2147483647 (4 Bytes)unsigned int 0 ~ 4294967295 (4 Bytes)long == intlong long原创 2014-03-22 12:07:46 · 1275 阅读 · 0 评论 -
cocos2dx 常见的49中动作详解
bool HelloWorld::init(){ ////////////////////////////// // 1. super init first if ( !CCLayer::init() ) { return false; } CCSprite * sp= CCSprite::create("I转载 2014-03-27 16:49:03 · 2033 阅读 · 0 评论 -
LINUX socket 在connect的时候发生 Operation now in progress 错误
解决方法:unsigned long ul = 1;ioctl( nSocket, FIONBIO, &ul ); //设置为非阻塞模式 放到connect()后面.原创 2014-03-06 11:51:14 · 25978 阅读 · 0 评论 -
关于 "can't identify protocol" 问题的定位
问题定位步骤: 1、 用root帐户 遍历 /proc/进程ID/fd目录,如果该目录下文件数比较大(如果大于10,一般就属于socket泄漏),根据该进程ID,可以确认该进程ID所对应的名称。 2、 重启程序恢复服务,以便后续查找问题。 3、 strace 该程序并记录strace信息。strace –p 进程ID >>/tmp/stracelog.log 2>&1 4、 查看原创 2014-03-05 14:12:31 · 14696 阅读 · 0 评论 -
gcc的几个妙用
gcc的学习在C接触到linux以后就开始不断的学习,也知道了一些基本的用法,但是关于gcc的使用还是有很多值得我们加深的地方。gcc只是一个编译工具而已。也就相当于我们在windows环境下的visual c++等一样,区别是visual c++是基于IDE的,而gcc是这些IDE的基础。学习linux程序设计必然会学习gcc。 gcc实质是完成程序的编译和链接,程序的编译是指从一种文件转载 2014-01-07 17:32:39 · 2152 阅读 · 0 评论 -
undefined reference to `dlclose' `dlopen' `dlsym'
解决的方法是在 ./configure 后面加上参数LDFLAS=‘-ldl’:make clean ./configure LDFLAGS=-ldl 或 LOCAL_LDFLAGS := -ldl make sudo make install原创 2014-09-28 10:43:49 · 7691 阅读 · 0 评论