随笔分类 - Linux
摘要:firewalld的基本使用 #启动 systemctl start firewalld #关闭 systemctl stop firewalld #查看状态 systemctl status firewalld #开机禁用 systemctl disable firewalld #开机启用 sys
阅读全文
摘要:说到条件变量,首先说下互斥锁,互斥锁是最一种同步形式,用于保护临界区,以保证任何时刻只有一个线程在执行其中的代码(假设互斥锁由多个线程共享),来保证共享数据的完整性,上锁过程如下图; 假如在一个程序中由3个线程访问一个共享变量g_Count,其中线程1和线程是负责对g_Count变量加一,线程3是负
阅读全文
摘要:shell中将字符串列表转换成数组,需要将数组用括号来表示,元素用"空格"符号分割开,格式如下: 使用内置的分割符IFS 使用内置的分割符IFS 借助于tr命令来处理 借助于tr命令来处理 使用字符串替换,构造数组 使用字符串替换,构造数组
阅读全文
摘要:例如shell脚本在centos系统中能正常执行,而在ubuntu系统中执行会出现类似Syntax error: "(" unexpected的错误,一般这种是因为sh与bash有些地方不兼容,解决方式: 1.执行bash xx.sh 2.执行chmod +x xx.sh对shell脚本赋予执行权限
阅读全文
摘要:在LINUX用户态的情况下,如果想要延时的话,可以使用用sleep函数,但是在一些情况下,需要更小单位的延时,ms/us 也是要的。用循环获取到的延时是不精确的。 sleep是不准确,这个函数是可以中断的; sleep容易受到系统信号,例如SIGALRM影响,各个系统版本实现不一,sleep是个gl
阅读全文
摘要:动态库运行时搜索顺序 1.LD_PRELOAD LD_PRELOAD是一个环境变量,用于动态库加载,动态库加载的优先级最高; 2.-wl,-rpath 编译目标代码时指定的动态库搜索路径(指的是用-wl,-rpath),readelf -d 命令可以查看编译的目标文件中rpath的路径; -L指定编
阅读全文
摘要:GDB信号处理 在GDB中使用handle命令定义一个信号处理。信号可以以SIG开头或不以 SIG开头,可以用定义一个要处理信号的范围(如:SIGIO-SIGKILL,表示处理从SIGIO信号到SIGKILL的信号,其中包括SIGIO, SIGIOT,SIGKILL三个信号),也可以使用关键字all
阅读全文
摘要:系统打开core dump功能 在终端中输入命令 ulimit -c ,输出的结果为 0,说明默认是关闭 core dump 的,即当程序异常终止时,也不会生成 core dump 文件; 使用命令 ulimit -c unlimited 来开启 core dump 功能,并且不限制 core du
阅读全文
摘要:GDB是UNIX及UNIX-like下的调试工具,通常gdb使用前置条件:编译时加入debug信息,这里指的是C++。 gcc/g++调试选项 gcc/g++是在编译时加入-g,-g分4个等级: -g0等于不加-g;即不包含任何信息 -g1只包含最小信息,一般来说只有你不需要debug,只需要bac
阅读全文
摘要:今天面试被问到一个问题,如何调试多进程的程序,我回答gdb attach [pid],之后又问如果程序中有些数据读取不对,但这种现象是偶然发生的,这时候要怎么操作,当时就懵了......,通过查找资料找到了答案,现在写篇博文记下来。 checkpoint 有些时候bug的出现是偶然发生的,如果有东西
阅读全文
摘要:1. 到GitHub下载源码,执行解压命令后,进入解压后的目录 2. 执行./autogen,生成configure 3. 执行./configure --prefix=/usr/local/,protobuf配置安装的路径,生成Makefile 4. 执行 make(编译用到C++11,保证g++
阅读全文
摘要:1.备份 2.下载新的CentOS-Base.repo 到/etc/yum.repos.d/ CentOS5 CentOS6 CentOS7 3.运行yum makecache生成缓存
阅读全文
摘要:在linux中安装源码,在源码目录下使用 ./configure --prefix=xxx --with=xxx 其中configure是一个可执行脚本, --prefix 选项就是配置安装的路径,如果不配置该选项,安装后可执行文件默认放在/usr/local/bin,库文件默认放在/usr/loc
阅读全文