
linux 学习
文章平均质量分 81
前进的蜗牛啊
一个程序员,现在依然在路上~
欢迎讨论技术问题,及对博客文章提意见
展开
-
cmake使用
CMake使用总结总结CMake的常用命令,并介绍有用的CMake资源。CMake意为cross-platform make,可用于管理c/c++工程。CMake解析配置文件CMakeLists.txt生成Makefile,相比直接用Makefile管理工程,CMake更灵活和简单。简单的例子一个完整的Demo可参考这里。假设当前目录的结构为转载 2016-04-23 21:08:23 · 599 阅读 · 0 评论 -
log4cplus 日志应用
og4cplus是一款优秀的基于C/C++的开源日志库。log4cplus具有线程安全,不用但心在多线程状态下写日志问题;使用灵活,可通过配置文件设置日志级别下输出位置,还可以在程序运行时动态设置日志输出级别,随心所欲掌控日志的输出;以及多粒度控制的特点。通过将信息划分优先级使其可以面向程序调试、运行、测试、和维护等全生命周期; 可以选择将信息输出到屏幕、文件、NT event log、甚至是远程转载 2014-08-05 22:38:00 · 1119 阅读 · 0 评论 -
cgi 编程的get和post
from 1.POST和GET 一个CGI程序在于服务器之间的信息传输和数据传输一般通过两种方法,即POST和GET。具体是哪一种方法这需要通过CGI的一个环境变量REQUEST_METHOD判断(具体怎么判断我会在下面详细讲解),在这之前先讲一下URL编码。 1.1 URL编码 虽然在设置表单信息的传输方式时有POST和GET两种方法,但是不管采取哪种方转载 2014-08-05 16:15:05 · 1355 阅读 · 0 评论 -
Linux中VMware虚拟机增加磁盘空间的扩容操作[图文]
Linux中VMware虚拟机增加磁盘空间的扩容操作[图文][日期:2011-02-09]来源:Linux社区 作者:Linux编辑[字体:大 中 小]用VMwareware虚拟机安装的Red Hat Enterprise Linux系统剩余空间不足,造成软件无法正常安装。如果重新装一遍系统就需要重新配置好开发环境和软件的安转载 2014-07-11 17:25:48 · 919 阅读 · 0 评论 -
配置svn服务器
系统环境 RHEL5.4最小化安装(关iptables,关selinux) + ssh + yum一,安装必须的软件包. yum install subversion (SVN服务器) mysql-server (用于codestriker) httpd mod_dav_转载 2014-07-10 11:26:05 · 790 阅读 · 0 评论 -
centos双网卡绑定
转自 http://bbs.chinaunix.net/thread-1946626-1-1.html绑定的前提条件:芯片组型号相同,而且网卡应该具备自己独立的BIOS芯片。操作过程:1、编辑虚拟网络接口配置文件,指定网卡IP (没有这个文件我们可以从以前的配置文件复制一个过来,减少输入的文字.)[root @heng ~] # cp /etc/sysconfig/network转载 2014-03-25 21:10:58 · 984 阅读 · 0 评论 -
使用其他厂家的mibs文件
一般我们下载回来的mib文件可能后缀名为.mib,为了清晰起见,可能需要改名。一般改成 MIB_NAME.txt 这样的形式。例如/usr/share/snmp/mibs/IP-MIB.txt 中包含如下一行IP-MIB DEFINITIONS ::= BEGIN这个MIB_NAME具体的定义是在mib文件中第一个包含 DEFINITIONS 的行,在DEFINITIONS转载 2014-03-05 15:01:14 · 1522 阅读 · 0 评论 -
linux oom详解
from http://blog.chinaunix.net/uid-29242873-id-3942763.htmlLinux 内核有个机制叫OOM killer(Out-Of-Memory killer),该机制会监控那些占用内存过大,尤其是瞬间很快消耗大量内存的进程,为了防止内存耗尽而内核会把该进程杀掉。典型的情况是:某天一台机器突然ssh远程登录不了,但能ping通,说明不是网络的转载 2013-12-29 14:18:51 · 3159 阅读 · 0 评论 -
用setsockopt()来控制recv()与send()的超时[转]
用setsockopt()来控制recv()与send()的超时[转]在send(),recv()过程中有时由于网络状况等原因,收发不能预期进行,而设置收发超时控制:在Linux下需要注意的是时间的控制结构是struct timeval而并不是某一整型数,以下是来自于网上一篇文章中的摘录,它是这样写的:int nNetTimeout=1000;//1秒,//设置发送转载 2013-11-19 15:26:17 · 929 阅读 · 0 评论 -
mysql 双机热备
from http://www.cnblogs.com/hustcat/archive/2009/12/19/1627525.html1.1、复制解决的问题数据复制技术有以下一些特点:(1) 数据分布(2) 负载平衡(load balancing)(3) 备份(4) 高可用性(high availability)和容错1.2、复制如何工作转载 2013-11-02 20:05:05 · 810 阅读 · 0 评论 -
用Graphviz和pvtrace等工具可视化C函数调用
from http://guiquanz.github.io/2012/10/15/linux_c_call_trace/巧用Graphviz和pvtrace等工具可视化C函数调用Oct 15, 2012引子在分析复杂的C/C++软件时,如果有一个工具可以便捷的生成“函数调用关系图”,不是一件很好的事吗?如果你庆幸是一个Javaer或钟爱基于IDE(如Eclipse)的转载 2013-10-20 18:08:53 · 2333 阅读 · 0 评论 -
精灵进程 自动守护重启进程
#include #include #include #include #include #include #include #include #include #include #include static int daemon_init(char *name, int dochdir, int doc原创 2013-09-27 22:02:38 · 813 阅读 · 0 评论 -
不用libnet 发送接收自定义以太网帧
/* * ===================================================================================== * * Filename: sendraw.c * * Description: test * * Version: 1.0 * Cr原创 2013-09-30 09:41:58 · 1726 阅读 · 0 评论 -
用libnet 发送自定义的以太网帧
#include #include #include //libnet#include static int sendLibnetLink(){ int packet_size = 0; libnet_t *l = NULL; char *device = "eth0"; char *destination_ip_str原创 2013-09-29 16:43:37 · 3244 阅读 · 0 评论 -
C/C++中extern关键字详解
C/C++中extern关键字详解1 基本解释:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern也可用来进行链接指定。 也就是说extern有两个作用,第一个,当它与"C"一起连用时,如: extern "C" void fun(int a, int b);则告诉编译器在编译fun这转载 2014-08-19 20:45:51 · 507 阅读 · 0 评论 -
linux下如何恢复rm命令删除的文件
在linux下rm -rf 是一个很可怕的命令,因为下达这个命令意味着一旦删除的文件是无法挽回的,事实是如此吗?真的没有补救措施了吗?答案是委婉了,在一定的条件下可以补救,大家可能熟悉windows下删除的补救措施是通过相关的软件实现的,在linux下同样可以做到补救,但是有个大前提:就是不能有覆盖的动作(意思就是在尝试恢复删除的数据前,删除文件的目录内不能存放新东西),不然覆盖多少就损失多少!转载 2014-08-23 22:24:58 · 2202 阅读 · 0 评论 -
snmp trap编程之分析notification.c
By: Bian Jiang (borderj@gmail.com)From: http://www.b0rder.comDate: 2008.11.11需要文件:NET-SNMP-EXAMPLES-MIB.txtnotification.c这两个文件都在net-snmp源码包里,我的版本是5.4.1NET-SNMP-EXAMPLES-MIB.txt ne转载 2014-10-06 17:54:52 · 3156 阅读 · 0 评论 -
采用dlopen,dlsym, dlclose操作动态库总结
转自:1、前言 为了使程序方便扩展,具备通用性,可以采用插件形式。采用异步事件驱动模型,保证主程序逻辑不变,将各个业务已动态链接库的形式加载进来,这就是所谓的插件。linux提供了加载和处理动态链接库的系统调用,非常方便。本文先从使用上进行总结,涉及到基本的操作方法,关于动态链接库的本质及如何加载进来,需要进一步学习,后续继续补充。如何将程序设计为插件形式,挖掘出主题和业务之间的关系转载 2016-01-13 21:10:57 · 1144 阅读 · 0 评论 -
结构体对齐打包方式
#ifdef WIN32#pragma pack( push, 1 )#define PKG #else#define PKG __attribute__((packed, aligned(1)))#endif原创 2015-10-26 10:07:35 · 495 阅读 · 0 评论 -
设置线程的优先级
用到的函数有sched_get_priority_max //获取当前线程最大优先级PTHREAD_SCOPE_SYSTEM和PTHREAD_SCOPE_PROCESS,前者表示与系统中所有线程一起竞争CPU时间,后者表示仅与同进程中的线程竞争CPUpid_t dvrPid = -1;pid_t exitDvr = -1;int status = 0;int ret = AP原创 2015-08-06 21:58:48 · 2013 阅读 · 0 评论 -
clock_gettime 函数的使用
这是一个很有用的函数,尤其在做基于时间的程序的时候。函数介绍#includeint clock_gettime(clockid_t clk_id, struct timespec *tp);clk_id 检索和设置的clk_id指定的时钟时间CLOCK_REALTIME:系统实时时间,随系统实时时间改变而改变,即从UTC1970-1-1 0:0:0开始计时,转载 2015-08-26 21:49:41 · 13275 阅读 · 0 评论 -
offsetof(TYPE, MEMBER)解释
该宏在Linux内核代码(版本2.6.22)中定义如下:#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER); 分析:(TYPE *)0,将 0 强制转换为 TYPE 型指针,记 p = (TYPE *)0,p是指向TYPE的指针,它的值是0。那么 p->MEMBER 就是 MEMBER 这个元素了,而&(p-原创 2015-07-30 12:02:00 · 1458 阅读 · 0 评论 -
getopt用法
getopt用来解析命令行选项参数。就不用自己写东西处理argv了。#include extern char *optarg; //选项的参数指针extern int optind, //下一次调用getopt的时,从optind存储的位置处重新开始检查选项。 extern int opterr, /原创 2015-07-30 16:43:46 · 545 阅读 · 0 评论 -
ntp服务器搭建
由于公司架构需求部分服务器走内部网络,这部分服务器均无外部网络,导致存在一个问题就是时间无法进行同步,于是网上找了下资料可以通过搭建ntp服务器来解决这问题,也相对简单。注意的是ntpserver各级之间,配置不同的网段。废话少说,看底下配置! 环境:ubuntu 10.04 server/64版本(服务端及客服端均相同) ntp服务器IP(内网):192.168.10.2转载 2015-03-06 09:47:39 · 1105 阅读 · 0 评论 -
ntp 配置安装服务器
NTP(The Network Time Protocol) 是网络时间协议,用以同步网络内计算机的时间。 它通过udp包交换,用特定算法进行协商,从而把计算机上的时间与时间服务器上的 时间保持一致。通过互联网它支持的误差是10毫秒,局域网则可以达到200微秒。 NTP时间服务器分为多层,从0层到4层,每层依次与上一次服务器同步,最高层的服务器 则直接连接一个高精度的时转载 2014-12-15 09:41:37 · 892 阅读 · 0 评论 -
select, poll epoll 的区别
1. 遍历方式的区别。select判断是否有事件发生是遍历的,而epoll是事件响应的,一旦句柄上有事件来了,就马上选出来。2. 数目的区别。select一般由一个内核参数(1024)限制了监听的句柄数,但是epoll通常受限于打开文件的数目,通常会打得多。3. epoll自身,还有两种触发方式。水平触发和边缘触发。边沿触发的效率更高(高了不少,但是编程的时候要小心处理每个转载 2015-02-03 16:19:41 · 670 阅读 · 0 评论 -
memmove实现
baidu的笔试题目用C语言实现一个公用库函数void * memmove(void *dest,const void *src,size_t n)。该函数的功能是拷贝src所指的内存内容前n个字节到dest所指的地址上。注意,作为公用库函数,请注意安全检查,注意处理内存区重合的情况。void* memmove(void *dest, const void *src,si转载 2015-01-26 21:21:15 · 813 阅读 · 0 评论 -
MySQL学习笔记5:修改表(alter table)
我们在创建表的过程中难免会考虑不周,因此后期会修改表修改表需要用到alter table语句 修改表名 复制代码 代码如下:mysql> alter table student rename person; Query OK, 0 rows affected (0.03 sec) 这里的student是原名,person是修改过后的名字 用rename来重命名,转载 2014-11-18 11:25:28 · 1609 阅读 · 0 评论 -
snmp添加私有库——收藏
转载请标明出处 原文地址:http://blog.youkuaiyun.com/hepeng597/article/details/8782868花了一两天时间测试和整理一下。用net-snmp扩展MIB库,实现方法可归结为四种:1)一是静态库方式,通过修改配置头文件,在相应地方包含新引入的mib模块的.c和.h文件,然后重新编译库文件和扩展代码;这种方式不够灵活,每次修改转载 2014-10-09 15:51:01 · 6171 阅读 · 1 评论 -
如何增加私有mibs
我这次是使用net-snmp软件开发包尝试开发SNMP客户端代理。Net-snmp是个开源软件,基于C语言开发,便于移植,用于开发snmp代理,但也提供管理端的查询工具。首先得安装net-snmp这个软件。从网上可以下载相关的软件包,我在这里使用的是5.4.1版本。安装比较简单,先是要配置,然后编译,最后安装。也就是常规的configure, make ,make install三个步骤就可成转载 2014-10-08 21:10:23 · 1143 阅读 · 0 评论 -
mysql 查询开头或最后几行
MYSQL查询开头或最后几行mysql 查询开头或最后几行(Limit)from http://hi.baidu.com/sunboy_2050/item/ccda0eceddd9a42de80f2ef0在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据SELECT * FROM table LIMIT [offset,] rows | ro转载 2013-09-03 20:09:21 · 25849 阅读 · 2 评论 -
linux下修改/dev/shm tmpfs文件系统大小+/etc/fstab 讲解
linux下修改/dev/shm tmpfs文件系统大小from http://hi.baidu.com/changzheng2008/item/c3634916d49670fc9d778a40默认系统就会加载/dev/shm ,它就是所谓的tmpfs,有人说跟ramdisk(虚拟磁盘),但不一样。象虚拟磁盘一样,tmpfs 可以使用您的 RAM,但它也可以使用转载 2013-08-28 09:35:52 · 12797 阅读 · 0 评论 -
tcp,udp每次发送大小 一个mtu
http://www.rosoo.net/a/201301/16478.html转载 2013-01-29 09:53:54 · 601 阅读 · 0 评论 -
mtu
转自:http://baike.baidu.com/view/26974.htmmtu求助编辑百科名片通信术语 最大传输单元(Maximum Transmission Unit,MTU)是指一种通信协议的某一层上面所能通过的最大数据包大小(以字节为单位)。最大传输单元这个参数通常与通信接口有关(网络接口卡、串口等)。目转载 2013-01-29 09:34:14 · 532 阅读 · 0 评论 -
网络编程常用函数
Linux中网络编程的常用函数 - 罗索实验室 http://www.rosoo.net/a/201301/16485.html转载 2013-01-27 17:17:49 · 508 阅读 · 0 评论 -
#,##讲解
转自http://www.cnblogs.com/mydomain/archive/2010/09/25/1834917.html#,##1、在一个预处理器宏中的参数前面使用一个#,预处理器会把这个参数转换为一个字符数组。(原文:When you put a # before an argument in a preprocessormacro, the p转载 2013-01-27 18:14:23 · 640 阅读 · 0 评论 -
软中断和硬件中断
1.软中断软中断是实现系统API函数调用的手段 函数调用时将返回地址和CPU状态寄存器内容压栈,函数执行完毕后出栈返回断点继续执行。 软中断调用时将返回地址和CPU状态寄存器内容压栈,修改特权级,根据中断号查找中断向量表,找到ISR中断服务例程地址,跳转执行。 综上,函数调用和软中断调用的区别是,软中断多了修改特权级和查找中断向量表的功能,其他部分完全一样。 一般,系统原创 2012-12-31 11:21:52 · 1559 阅读 · 1 评论 -
协议栈调用方式
写到这里,作为笔记原创 2012-12-29 21:09:06 · 797 阅读 · 0 评论 -
gcc buildin特性
以下都是搜集自网络,作为笔记参考1. 使用typedof构建一个泛型宏typedof 获取一个变量的类型#define min(x, y) ({typedof(x) _min1 = (x)}) //_min12.在case中语句中使用范围switch(major){case 0:break;case 1 ... 7:break;c转载 2012-12-28 16:39:46 · 745 阅读 · 0 评论 -
哈希算法之魔数
摘自http://blog.youkuaiyun.com/v_JULY_v 1.对于16位整数而言,乘数是405032. 。。32.。。。。。,。。。26544357693. 。。64.。。。。。,。。。11400714819323198485转载 2012-12-13 22:40:52 · 1051 阅读 · 0 评论