
Linux C
jibing57
这个作者很懒,什么都没留下…
展开
-
结构体最后的长度为0或者1的数组[转]
在Linux系统里,/usr/include/linux/if_pppox.h里面有这样一个结构:structpppoe_tag { __u16tag_type; __u16tag_len; chartag_data[0];} __attribute ((packed));最后一个成员为可变长的数组,对于TLV(Type-Length-Value)形式的结构,或者其他需要变长度的结构体,用这种方式定义最好。使用起来非常方便,创建时,malloc一段结构体大小加上可变长数据长度的空间给它,可转载 2011-02-18 17:03:00 · 476 阅读 · 0 评论 -
gdb 破解linux程序例子
摘自: http://www.linuxforum.net/forum/printthread.php?Cat=&Board=cpu&main=534069&type=thread从网上找滴对我这样的新手帮助很大~~ -----------------------------------------------------------------------------------转载 2012-07-11 15:42:32 · 3089 阅读 · 1 评论 -
关于 LIBGHTTP 收集的资料
转自:http://blog.youkuaiyun.com/maikforever/article/details/7622872源码在这里:http://libghttp.sourcearchive.com/documentation/1.0.9-17/files.html注意一个问题:用函数获 ghttp_get_body_len() 取长度时,如果要得到的包转载 2012-08-13 14:04:32 · 2084 阅读 · 0 评论 -
使用 GDB 调试多进程程序
转自: http://linux.chinaunix.net/docs/2007-08-06/4530.shtmlGDB 是 linux 系统上常用的调试工具,本文介绍了使用 GDB 调试多进程程序的几种方法,并对各种方法进行比较。GDB 是 linux 系统上常用的 c/c++ 调试工具,功能十分强大。对于较为复杂的系统,比如多进程系统,如何使用 GDB 调试呢?考虑下面转载 2012-07-27 22:13:51 · 547 阅读 · 0 评论 -
GDB 使用小结
转自: http://www.cnblogs.com/tiantao/archive/2012/03/15/2398623.htmlGDB whatis识别数组或变量的类型ptype比whatis的功能更强,他可以提供一个结构的定义print h@num(gdb)转载 2012-09-07 13:39:25 · 933 阅读 · 0 评论 -
[gdb] gdb x用法记录
转自: http://www.cnblogs.com/crestxu/archive/2012/04/26/2471457.html用gdb查看内存格式: x /nfu 说明 x 是 examine 的缩写n表示要显示的内存单元的个数f表示显示方式, 可取如下值 x 按十六进制格式显示变量。 d 按十进制格式显示变量。 u 按十进制格式显示无符号整型转载 2012-09-18 14:40:07 · 1241 阅读 · 0 评论 -
网络字节顺序 大头小头问题
网络字节顺序,老是记不住,网上搜了点资料,记录在此。。。不同的CPU有不同的字节序类型 这些字节序是指整数在内存中保存的顺序 这个叫做主机序 最常见的有两种:1. Little endian:将低序字节存储在起始地址 2. Big endian:将高序字节存储在起始地址 LE little-endian 最符合人的思维的字节序 地址低位存储值的低位原创 2012-11-01 16:47:27 · 1225 阅读 · 0 评论 -
C语言数组应注意问题
转自:http://www.itmao.com/Html/?308.htmlint a[10]; 数组名是常量不能为左值(如:a = 5;) 不要认为数组元素a[i]代表数组元素的值,它代表数组元素本身,可作为左值使用。 为指针进行初始化的字符串是只读的 (如:char *p = "hello"; strcpy(p, "w转载 2012-12-06 16:40:58 · 870 阅读 · 0 评论 -
Linux程序调试--查看二进制文件
转自: http://blog.sina.com.cn/s/blog_7a2fc53a0100y54h.html一,二进制文件的类型 Linux下的二进制文件是ELF格式的,主要有目标文件、静态链接库文件、动态链接库文件、可执行文件和coredump文件。可以使用如下命令查看其类型: file 文件名。 我们还是以之前的例子test.转载 2012-12-24 11:22:33 · 2483 阅读 · 0 评论 -
二位指针和二位数组理解
转自: http://blog.youkuaiyun.com/echo_qiang/article/details/5985682下面三种定义形式怎么理解?怎么动态分配空间? (1)、int **Ptr; (2)、int *Ptr[ 5 ]; 我更喜欢写成 int* Prt[5]; (3)、int ( *Ptr )[ 5 ];此文引自网上,出处不详,但是觉得非常好。略改转载 2012-12-31 14:10:22 · 562 阅读 · 0 评论 -
BASH增加日志功能
转自: http://sharkyan.blog.51cto.com/536264/478386BASH增加日志功能 如果工作中遇到了比较囧的情况,机器被人攻破了,黑客登录了你的系统(当然我们会尽全力防止这样的事情发生)你一定会希望系统记录下来哪个用户做过哪些操作。History功能并不能满足这个要求,因为黑客的智商应该会告诉他在离开的时候删除history记录(除非转载 2013-01-04 16:02:08 · 705 阅读 · 0 评论 -
libpopt的使用(译)
转自: http://www.cnblogs.com/qq78292959/archive/2012/06/05/2536455.html更新日志:2012.02.27 更新(校正并基本完成选项表部分内容的翻译)2012.02.28 更新(完成popt基本使用的第1部分以及第2部分的内容翻译)2012.03.01 更新(完成popt基本使用的全部翻译——剩下的3、4转载 2013-03-06 11:05:56 · 1494 阅读 · 0 评论 -
http://blog.youkuaiyun.com/imxiangzi/article/details/7558660
转自: http://blog.youkuaiyun.com/imxiangzi/article/details/75586601、龙书(Dragon book) 英文名:Compilers: Principles,Techniques,and Tools 作者:Alfred V.Aho,Ravi Sethi,Jeffrey D.Ullman 中文名:编译原理技术和工具转载 2013-06-06 15:19:59 · 861 阅读 · 0 评论 -
Linux Makefile 教程
转自: http://blog.youkuaiyun.com/liang13664759/article/details/1771246附上GNU Makefile的官方说明网址,以备以后查询。http://www.gnu.org/software/make/manual/make.html#Introduction 跟我一起写 Makefile转载 2012-06-15 11:25:45 · 941 阅读 · 0 评论 -
C语言中“:”的使用方法的总结
转自: http://bbs.ednchina.com/BLOG_ARTICLE_231823.HTM在C语言中,有一个符号——>“:”,此符号的使用归纳起来有下面四种用法:1:标号识别,用于表示程序的位置。这个在汇编语言中最常用,在C语言中有时也需要用到。比如: LOOP: { //转载 2012-06-11 22:38:34 · 66057 阅读 · 4 评论 -
关于linux的内存分配
转自: http://yanxiang.blog.51cto.com/2034913/684265基于栈的分配到目前为止,我们学过的所有的动态内存分配机制都是使堆和存储器映射来实现的。我们可能觉得这么做是理所当然的,因为堆和存储器映射天生就是动态的。程序的自动变量(automatic variables)存在于地址空间中另外一个常见的结构,栈。无论如何,实在是没有理由不转载 2012-06-08 16:35:18 · 1185 阅读 · 0 评论 -
想成为嵌入式程序员应知道的0x10个基本问题(转)
网上看到的资料.转载.转载 2011-02-18 17:24:00 · 621 阅读 · 1 评论 -
交换两个变量的值,不使用第三个变量
通常我们的做法是(尤其是在学习阶段):定义一个新的变量,借助它完成交换。代码如下:<br />int a,b;<br />a=10; b=15;<br />int t;<br />t=a; a=b; b=t;<br />这种算法易于理解,特别适合帮助初学者了解计算机程序的特点,是赋值语句的经典应用。在实际软件开发当中,此算法简单明了,不会产生歧义,便于程序员之间的交流,一般情况下碰到交换变量值的问题,都应采用此算法(以下称为标准算法)。<br /><br />上面的算法最大的缺点就是需要借助一个临时变量。那转载 2011-03-18 15:09:00 · 2223 阅读 · 3 评论 -
linux C man的用法
大家都知道在Unix/Linux中有个man命令,可以查询常用的命令,函数。可是对于我们这样只知道用"man 函数名"来查询的人来说,会遇到很多问题,比如: man read,我想看的是ANSI C中stdio的read函数原型和说明,没想到出来的确是BASH命令的说明,这是怎么回事呢? 原来read本身是man命令的一个参数,这样输入man就会以为你要使用read的功转载 2012-03-27 08:52:36 · 1320 阅读 · 0 评论 -
Linux程序设计——用getopt处理命令行参数
Linux下很多程序甚至那些具有图形用户界面(graphical user interface,GUI)的程序,都能接受和处理命令行选项。对于某些程序,这是与用户进行交互的主要手段。具有可靠的复杂命令行参数处理机制,会使得您的应用程序更好、更有用。getopt() 是一个专门设计来减轻命令行处理负担的库函数。1、命令行参数命令行程序设计的首要任务是解析命令行参数,GUI派的程序员很少关转载 2012-03-27 09:16:29 · 529 阅读 · 0 评论 -
浅析container_of(ptr, type, member)
浅析container_of(ptr, type, member)文章来源:http://gliethttp.cublog.cn#define container_of(ptr, type, member) ({ / const typeof( ((type *)0)->member ) *__mptr = (ptr); /转载 2012-04-11 13:13:41 · 703 阅读 · 0 评论 -
C中莫名奇妙的BUG
原文出处:http://sd.youkuaiyun.com/a/20110826/303659.html切记不要犯同样的问题,这种问题没注意到的话,可能一辈子都发现不了问题的所在。文章很有意思,分享给大家。我相信这样的bug,就算你是高手你也会犯的。你来看看作者犯的这个Bug吧。。首先,作者想用一段程序来创建一个文件,如果有文件名的话,就创建真正的文件,如果没有的话,就调用tmpfile()?创建转载 2012-04-24 09:13:19 · 578 阅读 · 0 评论 -
[Linux C] linux C实现trim功能
Linux C中没有提供trim功能的API。实际编程过程中,很多地方会使用到类似trim功能的地方。比如: 从文件中读取一行数据,存到字符串中。但从文件读取的数据的末尾会包含 “\r\n”(windows文件格式)或者“\n”(linux 文件格式)或者读取的数据前面会有空格和\t但往往我们所关心的数据并不包含这些\r或者\n的字符串。下面是自己编写的一个trim函数原创 2012-04-11 13:42:00 · 5227 阅读 · 0 评论 -
使用gdb对core dump问题进行调试
linux c编程时候,指针操作出问题的时候,或多或少都会出现core dump的问题。下面记录使用gdb来进行core dump问题的定位的方法。1. 设置系统配置,使得core dump的时候生成core文件。ulimit -c unlimited2. 使用运行程序时候产生的core dump文件进行定位gdb core.*3. 在生成的gdb界面出输入bt,原创 2012-04-17 22:52:02 · 643 阅读 · 0 评论 -
libc,glib,glibc等一些概念摘要。
以下文字转自:http://hi.baidu.com/baowup/blog/item/4305ee063de27176020881f6.htmllibc指C函数库,这是一个通称。GNU libc就是glibc。glibc 是提供系统调用和基本函数的 C 库,比如open, malloc, printf等等。所有动态链接的程序都要用到它。是GNU开发的C库(GN转载 2012-05-31 09:28:26 · 1482 阅读 · 0 评论 -
C语言中#和##的用法
转自:http://topic.youkuaiyun.com/u/20070727/14/c77ae5f0-050f-47be-8132-7dc305eead98.html一、一般用法 我们使用#把宏参数变为一个字符串,用##把两个宏参数贴合在一起. 用法: #i nclude #i nclude using namespace转载 2012-05-31 16:29:20 · 657 阅读 · 0 评论 -
[linux c] gdb如何debug宏定义
本文大概阐述如何让gdb能够显示宏定义的值以及对应的原理gcc默认编译的时候,gdb调试过程中是不能看到宏定义的,"p 宏名" 会显示错误,如下:(gdb) p CLIENT6_BEGIN_FLGNo symbol "CLIENT6_BEGIN_FLG" in current context.(gdb)其中 #define CLIENT6_BEGIN_FLG ""这样g原创 2012-04-09 11:19:55 · 6378 阅读 · 0 评论 -
关于UNIX高性能网络编程的几篇不错的文章
转自: http://blog.sina.com.cn/s/blog_3d8529400100h7ir.html标签: unix 高性能 服务器 select poll epoll it分类: 慢慢人生路1. 高性能网络编程,第 1转载 2012-06-08 11:27:12 · 1496 阅读 · 0 评论 -
【分享】推荐一些不错的计算机书籍
转自: http://blog.youkuaiyun.com/heiyeshuwu/article/details/8688324作者:heiyeluren时间:2013/03/18微信:heiyeluren2012 (欢迎关注微信获取更多技术相关资讯)微博:http://weibo.com/heiyeluren博客:http://blog.youkuaiyun.com/heiy转载 2013-06-06 17:38:28 · 1096 阅读 · 0 评论