编程问题
weixin_41666796
这个作者很懒,什么都没留下…
展开
-
cmake 打开 debug
cmake …/ -DCMAKE_BUILD_TYPE=Debug原创 2022-01-27 18:31:00 · 570 阅读 · 0 评论 -
共享内存无锁队列的实现
https://cloud.tencent.com/developer/article/1006241原创 2020-09-30 15:02:01 · 230 阅读 · 0 评论 -
pthread_rwlock_wrlock与 pthread_rwlock_rdlock区别
pthread_rwlock_t 结构体的定义:struct{int __lock;unsigned int __nr_readers;unsigned int __readers_wakeup;unsigned int __writer_wakeup;unsigned int __nr_readers_queued;unsigned int __nr_writers_queued...原创 2020-03-21 20:48:09 · 9279 阅读 · 0 评论 -
C语言日志分级设计
https://blog.csdn.net/dosthing/article/details/82828937原创 2019-12-28 17:41:49 · 238 阅读 · 0 评论 -
Linux下文件编码格式转换
1、用VIM查看文件编码在Vim 中可以直接查看文件编码:set fileencoding即可显示文件编码格式。2、 改写~/.vimrc 文件如果你只是想查看其它编码格式的文件或者想解决用Vim查看文件乱码的问题,那么你可以在~/.vimrc 文件中添加以下内容:set encoding=utf-8 fileencodings=ucs-bom,utf-8,cp936这样,就可以让...原创 2019-12-26 14:33:21 · 150 阅读 · 0 评论 -
linux添加头文件路径
原文链接:https://blog.csdn.net/yanshaodan/article/details/71576853原创 2019-12-25 13:33:20 · 215 阅读 · 0 评论 -
计算 结构体某个成员相对于结构体首地址的偏移量 offsetof宏的实现
https://blog.csdn.net/baidu_35679960/article/details/81538658原创 2019-12-14 15:46:44 · 290 阅读 · 0 评论 -
C语言字符串切割
vim strsplit.c#include<stdio.h>#include<unistd.h>#include<string.h>#include<stdlib.h>#include<time.h>static int strsplit(char *string, int stringlen, ...原创 2019-10-23 15:44:04 · 297 阅读 · 0 评论 -
gdb调试core dump入门实践(顺便复习一下之前介绍过的addr2line命令调试)
原文链接:https://blog.csdn.net/stpeace/article/details/49806473 ...转载 2019-08-02 09:50:36 · 374 阅读 · 1 评论 -
error: ISO C90 forbids mixed declarations and code [-Werror=declaration-after-statement]
版权声明:本文为博主原创文章,...转载 2019-07-26 16:14:43 · 111 阅读 · 0 评论 -
采用sendmsg发送消息失败 recvmsg接收消息失败
这是因为msg中的msg_control可能指向垃圾内存,解决办法就是将msg中的内存置零。原创 2019-07-31 13:00:45 · 1587 阅读 · 0 评论 -
c语言函数参数太多对性能是否有影响?
64位汇编(linux)当参数少于7个时, 参数从左到右放入寄存器: rdi, rsi, rdx, rcx, r8, r...转载 2019-07-17 12:16:40 · 1379 阅读 · 0 评论 -
CPU进程绑定技术(指定当前运行的CPU核)
CPU进程绑定技术(指定当前运行的CPU核)https://www.cnblogs.com/SoaringLee/p/10532387.html原创 2019-07-11 12:40:42 · 685 阅读 · 0 评论 -
绑定进程的CPU核以及限制进程的CPU使用率
绑定进程的CPU核以及限制进程的CPU使用率https://blog.csdn.net/computerme/article/details/82872776原创 2019-07-11 12:39:03 · 370 阅读 · 0 评论 -
进程绑定CPU核和参看CPU信息
进程绑定CPU核和参看CPU信息 https://blog.csdn.net/qq_37468954/article/details/81742633原创 2019-07-11 12:24:17 · 233 阅读 · 0 评论 -
Linux中CPU亲和性(affinity)
Linux中CPU亲和性(affinity) https://www.cnblogs.com/LubinLew/p/cpu_affinity.html原创 2019-07-11 12:23:41 · 426 阅读 · 0 评论 -
用malloc动态申请一个二维数组的三种方法
用malloc动态申请一个二维数组的三种方法https://blog.csdn.net/fengxinlinux/article/details/51541003原创 2019-07-12 18:01:47 · 165 阅读 · 0 评论 -
C程序监测进程是否存在
#include <stdio.h>#include <stdlib.h>#include <string.h> int main(){ FILE *ptr = NULL; char cmd[128] = "ps -ef | grep mp_client0 | grep -v grep | wc -l"; int status...原创 2019-01-17 10:52:08 · 1031 阅读 · 0 评论 -
/usr/bin/ld: cannot find -lxxx的错误
转载自参考通常在软件编译时出现的usr/bin/ld: cannot find -lxxx的错误或者…so undefine xxxx,主要的原因是库文件并没有导入的ld检索目录中。 解决方式:1. 确认库文件是否存在,比如-l123, 在/usr/lib, /usr/local/lib,或者其他自定义的lib下有无lib123.so, 如果只是存在lib123.so.1,那么可以通过s...转载 2019-01-09 13:19:19 · 4817 阅读 · 0 评论 -
利用sendmsg和recvmsg来指定发送接口或者获取接收数据接口
转载 struct msghdr { void *msg_name; #发送地址 socklen_t msg_namelen; #前者长度 struct iovec *msg_iov;#发送数据缓冲区的指针 size_t msg_iovlen;#发送数据长度 void *msg_control; #控制数据...转载 2019-01-16 08:54:36 · 422 阅读 · 0 评论 -
Linux下getopt()函数的简单使用
转载原文链接https://www.cnblogs.com/qingergege/p/5914218.htmlwhile((opt = getopt(argc, argv, "c:d:vp:h")) > 0) { switch (opt) { case 'c': IMP_LOG_DEBUG("config fi...原创 2019-03-08 15:41:41 · 93 阅读 · 0 评论 -
找到宏定义在哪个头文件内
# find /usr/include/ -name *.h | xargs grep 'MRT6_INIT'/usr/include/linux/mroute6.h:#define MRT6_INIT (MRT6_BASE) /* Activate the kernel mroute code */原创 2019-03-04 17:33:58 · 1017 阅读 · 0 评论 -
Linux网络编程:使用select函数实现socket 收发数据
原文链接:https://blog.csdn.net/li_wen01/article/details/55004918所谓的回射是指:客户端A向服务端B发送数据,服务端B接收到数据之后,再将接收到的数据发送回客户端B。所谓的迭代服务器,是指服务器端只用一个进程处理或线程处理所有客户端的请求。与之对应的是并发服务器,并发服务器是指对于每一一个客户端的请求,服务端都分配一个进程或是线程独立来处理客...转载 2019-03-15 15:51:10 · 625 阅读 · 0 评论 -
设置,取消,检查 标志位
#define BGP_INFO_IGP_CHANGED (1 << 0)#define BGP_INFO_DAMPED (1 << 1)#define BGP_INFO_HISTORY (1 << 2)#define BGP_INFO_SELECTED (1 << 3)#define BGP_...原创 2019-04-16 17:12:13 · 397 阅读 · 0 评论 -
gdb调试的基本使用
原文链接:https://blog.csdn.net/zdy0_2004/article/details/80102076转载 2019-04-17 17:35:59 · 133 阅读 · 0 评论 -
DEBUG 调试打印开关
#define PIM_DEBUG(format,…) if(g_debug_pim) { printf("%s @%d: "format, func, LINE, ##VA_ARGS);原创 2019-04-18 10:38:15 · 860 阅读 · 0 评论 -
gdb 自动调试
gdb 自动调试:gdb xxx 0<cmd.txt //0代表标准输入cmd.txt:set logging file /bitway/mp_client/debug.txt //设置输出的文件名称set logging on //输入这个命令后,此后的调试信息将输出到指定文件run //运行bt //显示堆栈信息set logging off //输入这个命令,关闭到指定文...原创 2019-05-15 09:35:30 · 601 阅读 · 0 评论 -
记一次进程异常退出的问题排查
记一次进程异常退出的问题排查首先查看内核日志,使用dmesgmp_server[1479]: segfault at 20 ip 000000000043274c sp 00007fffa0ea1120 error 4 in mp_server[400000+1f8000]根据网上的资料,error 后面的数字是比较有用的,上面的是4,转换成二进制是100。bit2: 值为1表示是用户态...原创 2019-05-15 10:47:35 · 2001 阅读 · 0 评论 -
debug printf
#include<stdio.h>#define TEST_DEBUG(format,...) if(g_debug) { printf("%s %s @%d: "format, __FILE__, __func__, __LINE__, ##__VA_ARGS__);}int g_debug = 1;int main(){ TEST_DEBUG("1234\n");...原创 2019-06-25 13:20:04 · 1460 阅读 · 0 评论 -
使用likely和unlikely 优化程序性能
作用likely unlikely是为编译器提供对分支优化的提示,基本用于if-else的分支优化场景。if-else在汇编时会将else分支的命令生成跳转语句(jmp),而跳转会影响程序性能,所以如果大部分情况下都是else分支成立的话,程序每次都会执行跳转,从而影响效率,使用likely和unlikely即可以告诉编译器大部分情况下哪个分支更有可能成立,从而将该分支的语句编译到前面,提高运行...转载 2019-06-27 12:23:27 · 812 阅读 · 0 评论 -
使用sed命令可以进行字符串的批量替换操作
转载使用sed命令可以进行字符串的批量替换操作,以节省大量的时间及人力;使用的格式如下:sed -i “s/oldstring/newstring/g” grep oldstring -rl path其中,oldstring是待被替换的字符串,newstring是待替换oldstring的新字符串,grep操作主要是按照所给的路径查找oldstring,path是所替换文件的路径;-i选...转载 2019-01-10 13:03:08 · 449 阅读 · 1 评论