LinuxC
文章平均质量分 84
qq1223386926
目前,成都
展开
-
pwd指令的简单实现
pwd指令的简单实现2015-08-23pwd以绝对路径打印当前的工作目录。因为整个系统的文件组织是树形的,所以,可以从当前目录逐层向根目录进行查找,当找到根目录,即可得到完全路径。1.如何逐层查找?系统通过inode节点来管理文件,所以每个文件会有一个inode号。目录是比较特殊的文件,通过<inode, name>的列表组织目录下的文件。每个目录下有原创 2015-08-23 23:47:29 · 1840 阅读 · 0 评论 -
linux c检测USB热插拔(netlink)
#include #include #include #include #include #include #define UEVENT_BUFFER_SIZE 2048 int main(void) { struct sockaddr_nl client; struct timeval tv; int CppL转载 2016-02-19 09:43:17 · 5334 阅读 · 2 评论 -
linux c检测网线热插拔(netlink)
#include #include #include #include #include #include #include #include #include #include #include #define BUFLEN 20480 int main(int argc, char *argv[]) {转载 2016-02-19 09:37:08 · 3370 阅读 · 0 评论 -
Xml树状节点的遍历
一、问题之前在生成PCI设备的树形结构的时候,采用读取PCI设备的目录结构来实现。将设备树输出到xml文件的时候,很“自然”的选择了递归的方式。后面当想要从输出的xml文件里获取PCI设备树形信息的时候,又再一次很“自然”地选择了递归读取xml文件。这种“自然”的选择,一定程度上影响了运行的效率。最后不得不将递归遍历xml节点的方式,改成迭代来处理。二、递归读写xml原创 2016-02-16 17:12:13 · 1488 阅读 · 0 评论 -
linux Kernel module简单模拟ps指令输出
一、方法/* sched.h */Struct task_struct { … list_headchildren; list_headsibling; …}; 1)/* traver every process */struct task_struct *task;for_each_process( task ){ /* handle原创 2016-01-19 16:00:30 · 549 阅读 · 0 评论 -
linux kernel module打印指定进程栈信息
一、 方法使用接口sched.h:extern void show_stack(structtask_struct *task, unsigned long *sp);二、 问题1)不能直接使用show_stack()2)应用的时候,无法插入模块,报Unknown symbol in module三、原创 2016-01-15 17:29:03 · 2265 阅读 · 1 评论 -
gdb执行和调试窗口分离
将执行程序和调试窗口分开,目前我在工作中用到的应用场景:在发往测试部的程序包,如果测出bug,而在开发环境暂时没有复现环境的时候(在测试部能复现),会打开一个调试窗口,找到执行程序的进程号,将运行的程序attach到gdb里面(方法二),然后进行简单的调试,寻找bug的原因。《the art of debugging with gdb ddd and eclipse》书里讲解情景:是在调试gu原创 2015-11-24 19:58:15 · 3149 阅读 · 0 评论 -
linux链接自己编写的动态库
Shared libraries with GCC on LinuxBy anduril462Libraries are an indispensable tool for any programmer. They are pre-existing code that is compiled and ready for you to use. They often provide ge转载 2015-11-19 15:00:06 · 459 阅读 · 0 评论 -
简单实现服务程序的一些问题
上个月按项目业务功能的新需求,需要实现一个简单的服务程序,对接前台客户端和后台的业务处理端。之前存在一个windows平台对接端,使用IOCP通信模型来实现。而现在的需求是要在Linux服务器上进行实现,所以采用的是epoll模型。这次的的实现周期大概是一个月的时间,主要是采用模仿的方式来做,因为在此之前对于网络编程这块不是太擅长,重新设计的风险太高,而且不能保证能够按时的完成项目计划。所原创 2015-11-14 16:44:09 · 345 阅读 · 0 评论 -
uptime指令的简单实现
2015-09-24uptime指令的简单实现报告当前时间;系统已运行多久;当前登录的用户数量;最近1分钟,5分钟和15分钟的平均负载。1.当前系统时间通过time(NULL)获取2.系统运行的时间,记录在/proc/uptime文件里面第1数值就是系统启动到现在的时间,第2数值是系统空闲的时间3.当前登录的用户数量,记录在u原创 2015-09-24 17:12:03 · 1503 阅读 · 0 评论 -
生成pci设备树的简单实现
2015-09-16系统的所有pci设备记录在/sys/bus/pci/devices目录下面:而如果pci地址下连接有其他子设备的话,可以在对应的目录下找到其他的pci地址:可以看到0000:00:11.0下连接有0000:02:00.0, 0000:02:01.0, 0000:02:02.0, 0000:02:03.0四个设备。所以,通过分析/sys/b原创 2015-09-16 19:50:16 · 2772 阅读 · 0 评论 -
ac指令的简单实现
2015-09-14ac指令通过分析/var/log/wtmp日志文件,统计登陆和退出记录,得出用户的连接时间。1.第一步是读取wtmp文件wtmp文件和utmp文件的记录格式是一样的,可以使用struct utmp结构体,将wtmp的记录逐条的都出来。inttravel_wtmp( st_link_node **stppLink ){ int fd原创 2015-09-14 22:19:41 · 939 阅读 · 0 评论 -
od指令的简单实现
2015-09-29od指令的简单实现od以八进制或其他进制导出显示文件内容。1.第一列显示的是文件的位移2.默认每行显示16个字节3.当显示多个文件时,会将多个文件合并显示4.当连续的多行相同时,相同的第二行会显示为星号(*),之后的相同行将不会显示,直到遇到新的不同行 intdo_od( int fd, unsigned long原创 2015-09-29 19:44:00 · 1547 阅读 · 0 评论 -
cp指令的简单实现
一、复制的三种情况:将文件复制成另外一个文件;intcopy_file2file( char *cpSrcPath,char *cpDstPath ){ int iFdSrc = 0; int iFdDst = 0; int iRdNum = 0; int iWrNum = 0; char caLine[ LI原创 2015-08-14 23:49:21 · 1720 阅读 · 0 评论 -
more指令的简单实现
2015-07-29 晴 成都more指令的简单实现遇到的问题和我的处理1. 问题:换行时,“--more()--”提示输入指令这行会多次不停的向屏幕上方移动。 处理:每次都从进行满屏输出,不管是翻页还是换行,总是将“--more--”挤到屏幕的最下方。 iCurrentLine=iCurrentLine-(sliPageLen-1)+reply; 等式原创 2015-07-29 13:44:52 · 798 阅读 · 0 评论 -
Linux C获取PCI设备名和厂商名
一、接口char *pci_lookup_name(struct pci_access *a, char *buf, intsize, int flags, ...) PCI_ABI;(/usr/include/pci/pci.h) 二、描述在/sys/bus/pci/devices/目录下面可以读取PCI设备的Vendor原创 2016-02-03 16:27:08 · 3314 阅读 · 0 评论