![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux
一个幽默且帅气的程序员
这个作者很懒,什么都没留下…
展开
-
LINUX 命令行变成-bash-4.2$
缺少用户环境配置文件,,那么为什么需要这样文件,这就是跟linux的机制有关联了,因为在linux下每次通过 useradd创建新的用户时,都会将所有的配置文件从/etc/skel复制到新用户的主目录下,一般默认在home下面的新用户主目录,而关于 /etc/skel这个目录,是主要被useradd所用到。-bash-4.2$ source ~/.bashrc-bash: /hom原创 2016-01-06 16:03:30 · 10552 阅读 · 0 评论 -
结构体中最后一个成员数组定义0个元素的意义
数组本义不支持动态扩展,但可以通过声明结构体中最后一个成员数组定义为0个元素可巧妙的实现C语言里的数组扩展。但如果定义为指针,则需要单独申请内存,动态拷贝。struct MyData { int nLen; char data[0]; }; 在结构中,data是一个数组名;但该数组没有元素;该数组的真实地址紧随结构体MyData之后,而这个地址就是结构体后面数据的地...原创 2018-07-04 20:21:48 · 1273 阅读 · 0 评论 -
Linux如何统计进程的CPU利用率
1. 如何统计进程CPU利用率1.0 概述在Linux的/proc文件系统,可以看到自启动时候开始,所有CPU消耗的时间片;对于个进程,也可以看到进程消耗的时间片。这是一个累计值,可以"非阻塞"的输出。获得一定时间间隔的两次统计就可以计算出这段时间内的进程CPU利用率。所以,是否存在一种简单的,非阻塞的方式获得进程的CPU利用率? 答案是:“没有”。这里给出来一个有趣的比喻:"这就像有人给你一张照...转载 2018-06-28 09:01:09 · 4920 阅读 · 0 评论 -
sqlite3数据库报错:“打不开数据库文件”
项目中因为追求执行速度和高效管理,采用了sqlite3文本数据库作为系统的数据库,几百次压力测试中出现“打不开数据库文件”错误,导致后期对数据库操作均报错,系统瘫痪。出现该问题,定位方法:1)首先sqlite登入数据库,查看数据库内容是否正确,是否是替换了数据库文件但进程未重新加载导致。经检查,排除该可能性。2)其次查看sqlite3源码执行过程中返回的错误,文件打开失败,open一个文件时失败。...原创 2018-06-26 08:22:09 · 6980 阅读 · 0 评论 -
/usr/bin/ld: skipping incompatible解决方案
近期需要和友商联调功能,根据友商提供的.a文件和demo实例,编写到工程项目中,编译时发现报错:/usr/bin/ld: skipping incompatible.....问题该问题实质是:链接库文件时,库文件版本与平台版本不对应。通过objdump -a/p查看友商提供的.a文件发现为为64位库文件,而我们自己bin文件为32位,且编译选项已强制为-m32...原创 2018-05-22 10:07:40 · 10092 阅读 · 1 评论 -
linux cooked capture
用wireshark查看包内容时,有时候我们会发现包的数据链路层头名称为linux cooked capture。如图:我们正常的以太网头如下:为何链路层名称为linux cooked capture?因为包是在linux中使用tcpdump,且指定参数-i any来捕获设备上所有网卡上的包。它会把所有包的以太网头都换成linux cooked capture,wireshark对此解释为虚假的协...原创 2018-05-11 09:28:48 · 3187 阅读 · 0 评论 -
snmp协议原理
snmp原理snmp:简单网络管理协议,Simple Network Management Protocol。用于网络管理的协议,管理员通过snmp的读操作(GET)向设备获取数据,通过snmp的写操作(SET)向设备执行设置操作;设备通过snmp的trap操作(报警)向管理员通报设备的重要状况改变事件。snmp的基本思想是为不同种类、不同厂家、不同型号的设备定义一个统一的接口和协议,使管原创 2018-01-06 11:30:14 · 5286 阅读 · 0 评论 -
C语言发送SNMP Trap消息
项目需求系统利用SNMP Trap消息上报状态给NMS,考虑使用net-snmp提供的SNMP库函数实现该功能,且需要根据不同端口使用不同的session。1)头文件为了使用 netsnmp 的 API,必须 include 以下这些头文件:12#include net-snmp/net-snmp-config原创 2018-01-15 16:06:09 · 4207 阅读 · 2 评论 -
C语言内嵌Python import时提示undefined symbol错误及解决
项目切gcc 4.6版本时,C语言内嵌了python,运行bin文件import时出现importError错误,提示python-2.7.11/lib/python2.7/lib-dynload/_collections.so: undefined symbol: _Py_ZeroStruct.基本代码如下:#include #include #include int main(原创 2018-01-04 19:14:52 · 11471 阅读 · 1 评论 -
线程分离状态
在任何一个时间点上,线程是可结合的(joinable),或者是分离的(detached)。一个可结合的线程能够被其他线程收回其资源和杀死;在被其他线程回收之前,它的存储器资源(如栈)是不释放的。相反,一个分离的线程是不能被其他线程回收或杀死的,它的存储器资源在它终止时由系统自动释放。 线程的分离状态决定一个线程以什么样的方式来终止自己。在默认情况下线程是非分离状态的,这种情况转载 2017-12-07 15:07:23 · 174 阅读 · 0 评论 -
realloc invalid pointer错误
代码运行出现该错误一般是函数传入的指针是malloc的内存指针,函数出参仍为该指针,函数内部对该指针进行操作,入参没有取该指针的指针,导致指针非法使用。如:函数定义U32 realloc_error(char *a){memcpy(a+1, "hello world", strlen("hello world"));}char * a = malloc(255)原创 2017-12-15 15:22:56 · 2153 阅读 · 0 评论 -
linux开机启动流程
操作系统的启动分为两个阶段:引导boot和启动过startup,引导阶段开始于打开电源开关,结束于内核初始化完成和systemd进程成功运行,启动阶段接管了剩余工作,直到操作系统进入可操作状态。总体可将LINUX开机启动过程分为四个步骤:1. BIOS上电自检(POST)2. 引导装载程序(GRUB2)3. 内核初始化4. 启动systemd,其为所有进程之父注意,本文以 ...原创 2018-08-13 09:47:56 · 4105 阅读 · 1 评论