
linux编程
文章平均质量分 78
hepeng597
这个作者很懒,什么都没留下…
展开
-
linux显示指定目录下所有的文件,子目录及子目录的文件
可以调用 dirent.h 中的scandir函数扫描指定目录中所有的文件名如下,用了一个队列先进先出保存每一级的目录,while循环,无需递归,需要把.和..目录过滤#include #include #include #include #include using namespace std;void scandir_recursive(const char*原创 2012-07-06 11:30:59 · 8185 阅读 · 0 评论 -
根据成员变量的地址推算出结构体变量的地址
在linux当中对此有一个很好的宏可以使用,叫做 container_of, 放在 linux/kernel.h当中。它的定义如下所示:/*** container_of - cast a member of a structure out to the containing structure** @ptr: the pointer to the member.* @type: th原创 2013-03-13 16:42:47 · 1170 阅读 · 0 评论 -
linux下利用rtc 实现精确定时器
rtc是linux系统中的一个时间设备,可以open打开,通过ioctl设置频率,然后就可以进行循环read操作,每次read的耗时是(1/频率 单位:秒)先上代码#include #include #include #include #include #include #include #include #include #include #define FREQ 2原创 2012-07-06 13:20:44 · 6008 阅读 · 1 评论 -
linux大端,小端,网络字节序转换之可移植性代码
我们有时候经常被大端,小端,网络字节序搞得很迷糊,本文理清一些概念,并给出可移植的代码。我们的主机字节序,即我们的机器存放内存里的顺序,有两种,一种是大端,另一种是小端,大部分的系统都是小端。在小端存储格式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节,比如一个unsigned short的变量的值为十六进制"0x0a 0x0b"对应的十进制2571,这个变量跨了1个字节原创 2013-04-19 16:00:07 · 6131 阅读 · 0 评论 -
linux中getmntent setmntent endmntent 用法例子
mntent 结构是在 中定义,如下: struct mntent { char *mnt_fsname; /* name of mounted file system */ char *mnt_dir; /* file system path原创 2013-05-14 14:44:13 · 10015 阅读 · 0 评论 -
daemon 进程为什么要fork两次,与后台运行程序区别?
daemon进程是后台守护进程,有时候也叫精灵进程(agent).linux 下server都是daemon进程。相信大部分开发人员都知道如何去写一个daemon进程。但是另一方面,大部分人不知道为什么要这么做,不少人是从某个地方copy一个函数,拿来主义。但是具体为什么这么实现,却不是很透彻。 见过一些面试官或被面试人。很多人解释daemon进程存在的理由是因为僵死进程。或原创 2013-08-07 14:30:02 · 10443 阅读 · 1 评论 -
fastcgi与cgi的区别
先讲下cgi:cgi在2000年或更早的时候用得比较多, 以前web服务器一般只处理静态的请求,如果碰到一个动态请求怎么办呢?web服务器会根据这次请求的内容,然后会fork一个新进程来运行外部c程序(或perl脚本...), 这个进程会把处理完的数据返回给web服务器,最后web服务器把内容发送给用户,刚才fork的进程也随之退出。 如果下次用户还请求改动态脚本,那么web服务器又再次for转载 2013-08-08 15:46:36 · 918 阅读 · 0 评论 -
net-snmp agent开发详解,非常简单
转载请标明出处 原文地址:http://blog.youkuaiyun.com/hepeng597/article/details/8782868花了一两天时间测试和整理一下。用net-snmp扩展MIB库,实现方法可归结为四种:1)一是静态库方式,通过修改配置头文件,在相应地方包含新引入的mib模块的.c和.h文件,然后重新编译库文件和扩展代码;这种方式不够灵活,每次修改扩展的MIB后,原创 2013-04-11 15:51:10 · 112574 阅读 · 28 评论 -
使用openssl的md5库
在linux机器上,有一个命令可以计算出文件的md5值,那就是md5sum,如果没有的话,就需要安装RPM包:coreutils。现在我们使用openssl的库也可以方便的计算出文件的md5值。主要用到的函数是int MD5_Init(MD5_CTX *c);int MD5_Update(MD5_CTX *c, const void *data, size_t len);int M原创 2013-05-28 15:14:18 · 22842 阅读 · 2 评论 -
iptables用法初解
一、四表五链之间的关系4个表:filter,nat,mangle,raw,默认表是filter(没有指定表的时候就是filter表)。表的处理优先级:raw>mangle>nat>filter。filter:一般的过滤功能nat:用于nat功能(端口映射,地址映射,中转IP等)mangle:用于对特定数据包的修改raw:有限级最高,设置raw时一般是为了原创 2013-01-23 14:03:28 · 14850 阅读 · 0 评论 -
IPv6下网络编程socket, TCP和UDP例子,以及兼容IPV4和IPV6的类
一、TCP socket ipv6与ipv4的区别服务器端源代码如下:#include #include #include #include #include #include #include #include #include #include #define MAXBUF 1024int main(int argc, char **argv){ i原创 2012-08-02 16:18:05 · 58960 阅读 · 12 评论 -
debug版本与release版本示例
示例代码#include #include using namespace std;int main(){ int *p = NULL; assert(p!=NULL); cout << "123" << endl; return 0;}1)编译debug版本:g++ test.cpp -o test生成文件:-rwxrwxr-x原创 2012-08-03 14:56:33 · 867 阅读 · 0 评论 -
linux logrotate 配置及测试
一、logrotate 配置logrotate 程序是一个日志文件管理工具。用来把旧的日志文件删除,并创建新的日志文件,我们把它叫做“转储”。我们可以根据日志文件的大小,也可以根据其天数来转储,这个过程一般通过 cron 程序来执行。logrotate 程序还可以用于压缩日志文件,以及发送日志到指定的E-mail 。logrotate 的配置文件是 /etc/logrotate原创 2012-07-20 19:31:47 · 24366 阅读 · 0 评论 -
linux 内核驱动编程 简单例子 与_IO, _IOR, _IOW, _IOWR 宏解析
一、_IO, _IOR, _IOW, _IOWR 宏的用法与解析在驱动程序里, ioctl() 函数上传送的变量 cmd 是应用程序用于区别设备驱动程序请求处理内容的值。cmd除了可区别数字外,还包含有助于处理的几种相应信息。 cmd的大小为 32位,共分 4 个域:bit31~bit30 2位为 “区别读写” 区,作用是区分是读取命令还是写入命令。bit29~bit15 14原创 2012-07-06 13:17:00 · 6847 阅读 · 1 评论 -
google coredump 测试
1. 下载最新的coredump代码当前最新版本为 1.2.1 。项目链接: http://code.google.com/p/google-coredumper/链接给了一个简单的使用方法,我们用这个方法来测试效果#include ... WriteCoreDump('core.myprogram'); /* Keep going, we gen原创 2012-07-26 17:09:17 · 4556 阅读 · 0 评论 -
linux 监视文件系统inotify 测试
一、简介Inotify 是一个 Linux 内核特性,它监控文件系统,并且及时向专门的应用程序发出相关的事件警告,比如删除、读、写和卸载操作等。您还可以跟踪活动的源头和目标等细节。在实际项目中,如果项目带有配置文件,那么怎么让配置文件的改变和项目程序同步而不需要重启程序呢?一个明显的应用是:在一个程序中,使用Inotify监视它的配置文件,如果该配置文件发生了更改(更新,修改)时,Inotif原创 2012-07-27 14:36:32 · 9892 阅读 · 0 评论 -
vim 缩进
vim tab变空格对于使用vim的程序员来说,shiftwidth,tabstop,softtabstop绝对是经常接触的三个缩进因素。能否有方便美观的,整体化的缩进,主要是由他们相互间的配合决定。在经过一段时间试用后,总结一下我的设置经验。1 shiftwidth:这个是用于程序中自动缩进所使用的空白长度指示的。一般来说为了保持程序的美观,和下面的参数最好一致。同时转载 2012-11-15 16:41:07 · 1362 阅读 · 0 评论 -
rhel6系统启动过程故障排错处理
http://chaorenyong.blog.51cto.com/2163445/1048194解析Linux系统开关机流程,让你游刃有余的掌握在系统启动过程过的任何错误,让你真正把握整个Linux系统,让你成为系统管理员中故障排错解除的佼佼者。掌握了这门技术的管理,能在短时间内判断出系统故障产生的原理,从而快速找到故障点,并轻松解决,为企业节省大量的人力和物力,减少大量不必要损失。转载 2013-01-04 12:30:20 · 3406 阅读 · 0 评论 -
git 详细教程,从头开始,看简单英文比中文好懂
Beginner PLEASE NOTE, Section I and II below, are not to be followed in order, they are 2 separate Actions (one to create a new local git repo to push to remote GIT, and the other to obtain "c原创 2014-07-11 14:53:44 · 16054 阅读 · 0 评论