Linux
文章平均质量分 52
屎带芬
All those whom we cherished will be reborn.
展开
-
在Linux下正则表达式和grep命令的使用
grep语法:[root @test /root ]# grep [-acinv] '搜寻字符串' filenames-list参数说明:-a :将 binary 文件以 text 文件的方式搜寻数据-c :计算找到 '搜寻字符串' 的次数-i :忽略大小写的转载 2011-07-06 09:39:02 · 593 阅读 · 0 评论 -
linux C程序中获取shell脚本输出
Table of Contents1. 前言2. 使用临时文件3. 使用匿名管道4. 使用popen5. 小结1. 前言Unix界有一句名言:“一行shell脚本胜过万行C程序”,虽然这句话有些夸张,但不可否认的是,借助脚本确实能够极大的简化一些编程工作。比如实现一个ping程序来测试网络的连通性,实现ping函数需要写上200~300行代码,为什么转载 2012-01-04 13:44:19 · 672 阅读 · 0 评论 -
linux select 函数和 fd_set 用法
select()机制中提供一fd_set的数据结构,实际上是一long类型的数组,每一个数组元素都能与一打开的文件句柄(不管是socket句柄,还是其他文件或命名管道或设备句柄)建立联系,建立联系的工作由程序员完成,当调用select()时,由内核根据IO状态修改fe_set的内容,由此来通知执行了select()的进程哪一socket或文件可读。 多端口复用函数select在调用前要首转载 2012-04-09 15:24:52 · 10484 阅读 · 0 评论 -
bash 比较
二元比较操作符比较两个变量或是数值。注意整数和字符串比较的分别。整数比较-eq等于if [ "$a" -eq "$b" ]-ne不等于if [ "$a" -ne "$b" ]-gt大于if [ "$a" -gt "$b" ]-ge大于等于if [ "$a" -ge "$b" ]-lt小于if [ "$a" -lt "$b" ]转载 2012-05-23 16:43:48 · 866 阅读 · 0 评论 -
linux 编译,链接和加载
出处:http://duanple.blog.163.com/blog/static/7097176720111141085197/1. 序最近在折腾各种.so,碰到了一些问题,一开始对于很多错误也没有头绪,茫然不知所措。索性化了一天多时间将>中部分内容略读了一遍,主要是关于编译,链接和加载这块的。于是顺便做个笔记,方便以后回顾。基本上知道了这些,对于编译,链接转载 2012-07-19 10:30:47 · 14668 阅读 · 0 评论 -
Linux 下多核CPU知识
1. 在Linux下,如何确认是多核或多CPU:#cat /proc/cpuinfo如果有多个类似以下的项目,则为多核或多CPU:processor : 0......processor : 12. Linux下,如何看每个CPU的使用率:#top -d 1之后按下1. 则显示多个CPUCpu0 : 1.0%us,转载 2012-07-31 13:18:41 · 1152 阅读 · 0 评论 -
Linux系统下,CPU信息详解(cpuinfo,多核,多线程)
在Linux系统中,如何详细了解CPU的信息呢? 当然是通过cat /proc/cpuinfo来检查了,但是比如几个物理CPU/几核/几线程,这些问题怎么确定呢?经过查看,我的开发机器是1个物理CPU,4核8线程,Intel(R) Core(TM) i7 CPU 860 @ 2.80GHz记录一下,判断的过程和知识。判断依据:1.具有相同core id的cpu是同一个co转载 2013-07-08 14:12:59 · 1008 阅读 · 0 评论 -
Per-cpu 变量
1. 简介2.6内核的特性,每个处理器都拥有自己的变量副本。2. 优势每个处理器访问自己的副本,无需加锁,可以放入自己的cache中,极大地提高了访问与更新效率。常用于计数器。3. 使用相关头文件:(1) 编译期间分配声明:DEFINE_PER_CPU(type, name);避免进程在访问一个per-CPU变量时被切转载 2013-08-14 14:35:11 · 1215 阅读 · 0 评论 -
spin_lock 总结
如果被保护的共享资源只在进程上下文和软中断上下文访问,那么当在进程上下文访问共享资源时,可能被软中断打断,从而可能进入软中断上下文来对被保护的共享资源访问,因此对于这种情况,对共享资源的访问必须使用spin_lock_bh和spin_unlock_bh来保护。当然使用spin_lock_irq和spin_unlock_irq以及spin_lock_irqsave和spin_unlock_i转载 2013-09-11 14:49:37 · 756 阅读 · 0 评论 -
UDP用打洞技术穿透NAT的原理与实现
首先先介绍一些基本概念: NAT(Network Address Translators),网络地址转换:网络地址转换是在IP地址日益缺乏的情况下产生的,它的主要目的就是为了能够地址重用。NAT分为两大类,基本的NAT和NAPT(Network Address/Port Translator)。 最开始NAT是运行在路由器上的一个功能模块。转载 2014-03-13 16:16:13 · 1332 阅读 · 0 评论 -
Makefile 编写
CC = g++OBJS = main.o base.o derive.oEXEC = test$(EXEC): $(OBJS) $(CC) -o $@ $^main.o: main.cpp base.h derive.h $(CC) -c $<base.o: base.cpp base.h $(CC) -c $<derive.o: de转载 2014-03-24 21:49:00 · 730 阅读 · 0 评论 -
通过valgrind 输出的偏移地址定位源码行号
有时用valgrind定位内存泄露问题时当内存泄露的位置在动态库(so)中时, 输出的调用栈为问号"???"并且没有指明源码的行号.即使尝试了加 -g 的编译参数并且程序退出前不执行dlclose,也无济于事.==29941== 17 bytes in 1 blocks are definitely lost in loss record 29 of 197==29941== at原创 2015-01-28 13:33:56 · 6247 阅读 · 2 评论 -
RaspberryPi 树莓派启动报错 mmcblk0: error -110 解决方法
错误信息:mmcblk0: error -110 transferring data, sector 136999, nr 225, cmd response 0x900, card status 0xb00end_request: I/O error, dev mmcblk0, sector 136999由于树莓派比较挑SD卡,看看你的卡是不是在这个列别中:htt原创 2015-07-23 14:37:34 · 11553 阅读 · 4 评论 -
UDP punch(打洞|穿透)
目标路由穿透,实现广域网P2P通讯。4种典型NAT类型按照NAT设备在进行地址映射时行为的不同,NAT可以分为以下四种: Full Cone Restricted Cone Port Restricted Cone Symmentric 如何判断本机NAT类型可以通过PyStun来判断:NA转载 2015-12-10 13:15:55 · 2912 阅读 · 0 评论 -
字节对齐注意事项
对齐准则 先来看四个重要的基本概念: 1) 数据类型自身的对齐值:char型数据自身对齐值为1字节,short型数据为2字节,int/float型为4字节,double型为8字节。 2) 结构体或类的自身对齐值:其成员中自身对齐值最大的那个值。 3) 指定对齐值:#pragma pack (value)时的指定对齐值value。转载 2016-02-25 11:14:52 · 1578 阅读 · 0 评论 -
linux解压 tar命令
tar命令tar [-cxtzjvfpPN] 文件与目录 .... 参数: -c :建立一个压缩文件的参数指令(create 的意思); -x :解开一个压缩文件的参数指令! -t :查看 tarfile 里面的文件! 特别注意,在参数的下达中, c/x/t 仅能存在一个!不可同时存在! 因为不可能同时压缩与解压缩。 -z :是否同时具有 gzip 的属转载 2011-12-16 16:05:42 · 454 阅读 · 0 评论 -
Linux下IP地址格式转换(支持IPv4和IPv6)
函数inet_pton和inet_ntop这2个函数能够处理ipv4和ipv6,原型如下 #include #include #include int inet_pton(int af, const char *src, void *dst);这个函数转换字符串到网络地址,第一个参数af是地址族,转换后存在dst中 inet_pton 是inet_addr的扩展,转载 2011-11-03 14:32:41 · 10998 阅读 · 0 评论 -
AWK 学习笔记
1. awk简介awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。awk的处理文本和数据的方式是这样的,它逐行扫描文件,从第一行到最后一行,寻找匹配的特定模式的行,并在这些行上进行你想转载 2011-11-23 14:23:42 · 552 阅读 · 0 评论 -
linux 内核(驱动)常用函数
2.4.1 内存申请和释放 include/linux/kernel.h里声明了kmalloc()和kfree()。用于在内核模式下申请和释放内存。 void *kmalloc(unsigned int len,int priority); void kfree(void *__ptr); 与用户模式下的malloc()不同,kmalloc()申请空间有大小限制。长度是2的转载 2011-06-30 09:41:00 · 4863 阅读 · 0 评论 -
Linux下抓包工具tcpdump以及分析包的工具wireshark
近日在学习网卡驱动时,需要抓取网卡发送、接收数据的情况,于是找到了tcpdump和wireshark这两个工具,tcpdump是用来抓取数据的,wireshark则是用于分析抓取到的数据的,现将用法记录下来:Tcpdump使用方法(1)第一种是关于类型的关键字主要包括host,net,port例如: host 210.27.48.2,指明 210.27.48.2是一台主机,net 202.0.0.原创 2011-06-29 09:52:00 · 3643 阅读 · 0 评论 -
Linux字符设备驱动程序编写基本流程
linux 字符设备 驱动程序转载 2011-07-06 09:10:12 · 3573 阅读 · 0 评论 -
掌握 Linux 调试技术
本文讨论了四种调试 Linux 程序的情况。在第 1 种情况中,我们使用了两个有内存分配问题的样本程序,使用 MEMWATCH 和 Yet Another Malloc Debugger(YAMD)工具来调试它们。在第 2 种情况中,我们使用了 Linux 中的 strace 实转载 2011-08-10 11:04:11 · 529 阅读 · 0 评论 -
解析IPV4报文 和IPV6 报文的 checksum 的算法
校验和(checksum)算法,简单的说就是16位累加的反码运算:计算函数如下:我们在计算时是主机字节序,计算的结果封装成IP包时是网络字节序,注意这两者之间的区别,我们在从IP包里读取要转化为主机字节序,往IP包里存入时要转化为网络字节序在存入。UINT转载 2011-08-10 16:44:04 · 9261 阅读 · 1 评论 -
不同情况下构造skb数据包的实现
在我这个网络接口的程序中(can0),其实难点就是怎样组包。怎样在原来数据包的基础加上自己的数据,怎样构造ip头,怎样构造udp头。调试了两个星期,终于是调通了,在这个过程中,通过看内核源代码和自己组包的尝试,大概对组包的方法有了些了解,记录在此,留做备忘,也希望能给需要转载 2011-08-10 16:46:40 · 1423 阅读 · 0 评论 -
linux 内核调试
内核中有多项用于调试的功能,但这些功能会造成额外输出,并导致性能下降,因此发行版本厂商通过都禁止发行版内核中的这些功能。但作为一名内核开发者,调试需求具有更高的优先级,因此应该构造并安装自己的内核,并打开这些调试选项。一、内核中的调试选项CONFIG_DEBUG_转载 2011-08-10 11:00:39 · 1926 阅读 · 0 评论 -
Linux kernel 进程的睡眠和唤醒
Linux进程的睡眠和唤醒1 Linux进程的睡眠和唤醒在Linux中,仅等待CPU时间的进程称为就绪进程,它们被放置在一个运行队列中,一个就绪进程的状 态标志位为TASK_RUNNING。一旦一个运行中的进程时间片用完, Linux转载 2011-09-13 17:06:27 · 3883 阅读 · 0 评论 -
spinlock自旋锁de使用
Linux内核中最常见的锁是自旋锁。一个自旋锁就是一个互斥设备,它只能有两个值:"锁定"和"解锁"。如果锁可用,则"锁定"位被设置,而代码继续进入临界区;相反,如果锁被其他进程争用,则代码进入忙循环并重复检查这个锁,直到锁可用为止。这个循环就是自旋锁的"自旋"。自旋锁最多只能被一转载 2011-09-14 15:57:44 · 2967 阅读 · 1 评论 -
自己常用的 vim 命令
光标移动:h\j\k\l:左\下\上\右gg\G:文本开头\结尾ctrl+u\p:上\下翻页w\b:单词前\后插入:i\a:光标前\后插入I\A:行前\后插入选择:v\V\ctrl+v:自由选择\行选择\块选择原创 2011-09-16 10:36:22 · 664 阅读 · 0 评论 -
vim 插件 ctags 和 taglist 的安装和使用
1.ctags(1)到http://ctags.sourceforge.net/下载ctags源码ctags-5.6.tar.gzhttp://prdownloads.sourceforge.net/ctags/ctags-5.6.tar.gz(2)解压并安装ta转载 2011-09-15 15:54:49 · 732 阅读 · 0 评论 -
linux 下 kernel + kthread + 内核list + vmalloc + vfree + interruptible_sleep_on_timeout 学习实例
code:#include #include #include #include #include #include #include #include #include #include #include typedef struct tag_i原创 2011-08-26 15:52:49 · 1491 阅读 · 0 评论 -
linux bash环境下面给expect脚本传递参数
#!/usr/bin/expect# file name :rauth# Usages : rauth username [ passworld ]# Description : 自动发送用户名与密码# 运行 myxrgsu -aif { $argc != 2 &&转载 2011-10-11 16:09:07 · 11466 阅读 · 0 评论 -
自动ssh登录的几种方法
1. 自动ssh/scp方法==A为本地主机(即用于控制其他主机的机器) ;B为远程主机(即被控制的机器Server), 假如ip为192.168.60.110;A和B的系统都是Linux在A上运行命令:# ssh-keygen -t rsa (连续三转载 2011-10-11 17:17:30 · 784 阅读 · 0 评论 -
从 H264 码流中解析出 nal 单元
在应用层,很多时候 IDR、SEI、PPS、SPS 是打包在一起收到的, 需要手动解析出这几种帧类型。定义 nalu 结构:typedef struct{ uint32_t len; //! Length of the NAL unit (Excluding the start code, which does not belong to the N原创 2016-12-28 14:42:11 · 2573 阅读 · 0 评论