- 博客(8)
- 资源 (2)
- 收藏
- 关注
原创 libcurl in multithreads
libcurl在多线程中使用时,需要设置CURLOPT_NOSIGNAL为1,否则会引起程序crash。 但是设置了CURLOPT_NOSIGNAL之后,在域名dns解析时,设置的超时就不起作用,这样容易引起整个任务超时。此时,解决此问题,使超时设置生效的方法是:重新编译libcurl,使c-ares生效(异步解析dns),具体方法如下:1. 安装c-ares: yum install c
2017-07-24 16:52:11 451
转载 Strace诊断CPU跑高问题
手把手教你用Strace诊断问题发表于2015-10-16早些年,如果你知道有个 strace 命令,就很牛了,而现在大家基本都知道 strace 了,如果你遇到性能问题求助别人,十有八九会建议你用 strace 挂上去看看,不过当你挂上去了,看着满屏翻滚的字符,却十有八九看不出个所以然。本文通过一个简单的案例,向你展示一下在用 strace 诊断问题时的一些套路。
2015-10-23 17:58:06 5200 1
原创 linux平台C语言定位CPU跑高线程
首先,用top查看cpu使用率高的进程:然后, top -H -p 5844查看线程信息从上图可以看到,5879这个线程占用大量CPU接着,用gdb attach到该进程,查看线程站信息:这样就可以确定cpu跑高的地方了。另一种找出CPU过高的线程的方法:找出线程对CPU使用率过高的进程的所有线程进行排序ps
2015-09-22 17:43:15 617
原创 C判断一个数是2的次方、求给定数的最近的2的次方值
/*! * \brief Computes the next highest power of two * * This nice little algorithm is taken from * http://graphics.stanford.edu/~seander/bithacks.html#RoundUpPowerOf2 */static uint32_t round_nex
2015-09-09 17:46:23 523
原创 编译so动态库出现relocation R_X86_64_32 against `a local symbol
最近在编译动态库so的时候,总是出现:/usr/bin/ld: md5.o: relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPICmd5.o: could not read symbols: Bad value查了
2015-07-16 11:38:18 2986
原创 服务端用system()执行shell命令获取执行结果(排除signal影响)
最近在工作中遇到在服务端程序中需要执行shell命令,并获取执行结果的问题。 由于在服务端程序中一般会设置忽略子进程的信号处理:signal(SIGCHLD, SIG_IGN);所以如果直接使用system()执行,并获取返回值作为命令执行成功与否的判断,是不合理的,这样会经常返回-1,但是命令实际上已经成功执行了。网上搜索了一下处理方法:signal(SIGCHLD, SIG_DFL
2015-07-03 10:34:56 2143
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人