自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(93)
  • 收藏
  • 关注

转载 enum 数值 和 字符串的对应

static const char *state_name[] = {   "One String",   "OK",   "Field List",   "Sleep",   "Field (txt)",   "Field (bin)",   "Result (txt)",   "Result (bin)",   "End",   "Error", 

2016-01-26 14:38:52 1349

转载 asprintf

函数原型:int asprintf(char **strp, const char *fmt, ...);功能:asprintf()可以说是一个增强版的sprintf(),在不确定字符串的长度时,非常灵活方便,能够根据格式化的字符串长度,申请足够的内存空间。此外,使用完后,必须通过free()释放空间。不过,这是GNU扩展的C函数库,不是标准C函数库或者POSIX。

2016-01-25 15:55:57 2037

转载 结构体中.和->的用法

[cpp] view plain copy print?#include"stdio.h"  #include"stdlib.h"    struct linkwqf{      int age;      char * name;      struct linkwqf* next;  };  struct linkwqf link

2016-01-22 11:32:20 667

转载 __attribute__ 你知多少?

GNU C 的一大特色就是__attribute__ 机制。__attribute__ 可以设置函数属性(Function Attribute )、变量属性(Variable Attribute )和类型属性(Type Attribute )。__attribute__ 书写特征是:__attribute__ 前后都有两个下划线,并切后面会紧跟一对原括弧,括弧里面是相应的__attri

2016-01-20 13:26:05 272

转载 #pragma pack(n)和__attribute__((aligned(m)))的区别

#pragma pack(n)和__attribute__((aligned(m)))的区别:前 者告诉编译器结构体或类内部的成员变量相对于第一个变量的地址的偏移量的对齐方式,缺省情况下,编译器按照自然边界对齐,当变量所需的自然对齐边界比n大 时,按照n对齐,否则按照自然边界对齐;后者告诉编译器一个结构体或者类或者联合或者一个类型的变量(对象)分配地址空间时的地址对齐方式。也就是所,如 果

2016-01-20 09:37:59 482

转载 printf %.*s

小数点.后“*”表示输出位数,具体的数据来自参数表printf格式字符串中,与宽度控制和精度控制有关的常量都可以换成变量,方法就是使用一个“*”代替那个常量,然后在后面提供变量给“*”。同样,小数点.前也可以添加*,也要用户输入一个位宽值来代替,表示输出的字符所占位宽。#include #include int main(){ char *s = "

2016-01-15 10:57:29 358

原创 ld.so.conf的错误

报symbol lookup error:    undefined symbol:的错误1)用ldd一看 是动态库链接错误,如下所示:2)进入/etc/ld.so.conf进行修改,加入路径即可。

2016-01-14 10:44:52 1149

转载 .lo后缀文件

o: 编译的目标文件a: 静态库,其实就是把若干o文件打了个包so: 动态链接库(共享库)lo: 使用libtool编译出的目标文件,其实就是在o文件中添加了一些信息la: 使用libtool编译出的库文件,其实是个文本文件,记录同名动态库和静态库的相关信息

2016-01-13 14:48:52 869

转载 ILP32和LP64数据模型

32位环境涉及"ILP32"数据模型,是因为C数据类型为32位的int、long、指针。而64位环境使用不同的数据模型,此时的long和指针已为64位,故称作"LP64"数据模型。现今所有64位的类Unix平台均使用LP64数据模型,而64位Windows使用LLP64数据模型,除了指针是64位,其他基本类型都没有变。  TYPE               LP32  I

2016-01-12 15:31:07 924

转载 declspec(dllimport) 和__stdcall

函数被调用前,所有参数压入栈内,返回时要释放堆栈;__stdcall 告诉编译器在函数返回时用 ret x 方式,即由被调用函数释放堆栈;如果不加 __stdcall, 则函数返回直接ret,由调用者释放堆栈.declspec(dllexport)和declspec(dllimport)知道这两个一个是导入,一个是导出,dllexport声明该函数是一个导出函数

2016-01-12 15:30:05 978

转载 __cplusplus

常在cpp的代码之中看到这样的代码:    #ifdef __cplusplus     extern "C" {     #endif    //一段代码    #ifdef __cplusplus     } #endif   这样的代码到底是什么意思呢?首先,__cplusplus是cpp中的自定义宏,那么定义了这个宏的

2016-01-12 15:01:28 330

转载 缓冲I/O与非缓冲I/O(fopen与open系列函数区别)

在程序中,对于文件的读写,程序运行时间主要消耗在I/O上。与读写内存相比,读写硬盘上的文件慢很多;每次读取/写入文件的内容很少的话,那么程序运行时间主要消耗在I/O上了。因此有了缓冲I/O和非缓冲I/O。非缓冲I/O,每次对于文件的操作,都要进行I/O操作。例如Linux的系统条用:open, read, write, lseek, close。它们依赖操作系统,没有文

2016-01-12 11:12:27 394

转载 iovec结构体 与readv和writev相关

简介编辑I/O vector,与readv和wirtev操作相关的结构体。readv和writev函数用于在一次函数调用中读、写多个非连续缓冲区。有时也将这两个函数称为散布读(scatter read)和聚集写(gather write)。所在头文件编辑123456#include 

2016-01-11 16:59:55 694

转载 今天开始系统学习linux、c

以下是来自其他博客,非常感谢,给我指明学习方向,今天贴在这里是提醒自己好好学习,不忘初心。无论如何都要坚持住,年底必是硕果累累。1、先从《C primer plus》、《The Cprogramming_Language》入手,购买此两本书,以前断断续续的也看过,看能不能年前看完此两本书。加油吧~~~一、工具篇“公欲善其事,必先利其器”。编程是一门实践性很强的工作,在你

2016-01-11 10:06:35 269

转载 指针函数与函数指针的区别

一、在学习arm过程中发现这“指针函数”与“函数指针”容易搞错,所以今天,我自己想一次把它搞清楚,找了一些资料,首先它们之间的定义:1、指针函数是指带指针的函数,即本质是一个函数。函数返回类型是某一类型的指针     类型标识符    *函数名(参数表)      int *f(x,y); 首先它是一个函数,只不过这个函数的返回值是一个地址值。函

2016-01-06 15:47:30 199

转载 正则表达式与通配符的区别

首先要记住的是: 正则表达式与通配符不一样,它们表示的含义并不相同!find:开始之前,我们先来看一下 find 命令的基本结构:find start_directory test options criteria_to_match action_to_perform_on_resultsfind ./ -name a.out在以下命令中,find 将开始在当前目录(用“.”表示)中查找任

2016-01-04 17:05:40 609

转载 grep正则表达式-高级

虽然正则表达式经常都在用,但是很少能够静下心来仔细的总结一下。最近看了一个台湾人的网站叫做鸟哥Linux私房菜,关于正则表达式的描述挺详细的。在此,我进行一下总结,如果想仔细的学习正则表达式,请访问鸟哥Linux私房菜,台湾同胞的网站是繁体中文的,需要点儿耐心。     正则表达式只是字符串的一种描述,只有和支持正则表达式的工具相结合才能进行字符串处理。本文以grep为例来讲解正则表达式。

2016-01-04 17:00:49 427

原创 libpcap

//pcaptest.htypedef struct{//定义以太网的头部数据类型 u_char dmac[6]; u_char smac[6]; u_char etype[2];}ETHHEADER;typedef struct{//IP 层数据包报文头部的数据类型 u_char version:4; u_char header_len:4; u_char

2015-12-31 10:12:01 1204 1

原创 gcc $< $@

$@表示目标,$^表示依赖列表target:dependency1 dependency2gcc -o $@ $$@ 就是target$

2015-12-30 11:30:24 1151

原创 socket udp通信

基本流程:1)udp套接字创建调用socket()函数,采用SOCK_DGRAM方式,创建一个基于UDP的套接字。2)地址与端口的绑定绑定一个ip地址与端口,仍是bind函数3)数据收发调用sendto和recvfrom()函数进行数据收发。在UDP不需要调用connect()、listen()、accept()函数,因为UDP在通信时不需要保持连接。4)套接字关闭

2015-12-28 17:06:06 374

原创 MAKE的使用

一、什么是MakeMake理解为一种脚本,这种脚本主要用于多文件编译。Make命令的执行原理是利用Makefile中的文件依赖关系以及源文件的最后修改时间来确定哪些文件需要重新编译。一个完整的makefile有5部分组成1)显示规则主动编写描述规则,用于指示在何种状态下更新哪些目标文件;即:在编写makefile时需要明确指出各目标文件所依赖的源文件集合,以及编译本目标文件所需

2015-12-28 14:04:11 345

原创 vi、gcc、gdb基础

1、vi按下esc键。:set nu,设置行号,即在编辑时,会在每一行前面体现行号。:set nonu,取消行号设置。2、gcc1)基础:gcc编译流程(1)、预处理:是针对头文件(.h)进行编译,即将这些头文件编译到当前源文件中。预处理常用的选项是-E,它的作用是告诉编译器,当预处理结束后停止编译。gcc –E test.c –o test.i

2015-12-28 09:34:29 460

转载 linux telnet连接两台内网机器No route to host

有两台内网机器,相互能ping通,都能telnet自己,其中A可以telnet到B,但B不可以telnet到Aja@cn45:~$telnet 192.168.1.10Trying 192.168.1.10...telnet: Unable to connect to remote host: No route to host解决方法在A主机上执

2015-12-24 16:35:04 2486

原创 linux多线程简单介绍-线程创建、终止、属性设置、多线程同步技术(互斥量、条件变量、信号量)

一个进程中包括多个线程,每个线程都是CPU进行调度的基本单位。与进程相比,线程的优点:1)减少系统调度开销。由于线程基本不拥有资源,156页

2015-12-23 17:29:35 498

原创 进程间通信-信号signal

同一台计算机中的进程相互通信的方式主要有:管道、信号、信号量、消息队列、共享内存。1、信号:信号是进程间通信机制中唯一的异步通信机制,一个进程不必通过任何操作来等待信号到达。收到信号的进程对各种不同的信号有不同的处理方法。进程通过系统调用signal来指定进程对某个信号的处理行为,如果不指定,系统会调用默认操作来处理信号,大部分信号的默认操作会终止进程。进程可以指定处理函数,由该函数来

2015-12-23 16:45:55 741

原创 进程基础-进程的创建、管理与调度、终止

进程有三种状态:就绪、执行、阻塞。一、进程操作1、进程的创建程序可通过getpid()函数获取自身所运行的进程的ID,也可以通过getppid()获取父进程ID。#include #include #include int main(){//printf("test\n");printf("getpid:%d\n",(int)getpid());prin

2015-12-23 15:00:57 509

原创 底层文件操作函数--open、close、write、read

底层文件操作函数通过文件描述符与底层文件相关联,各函数通过文件描述符来对文件进行操作。1、open函数头文件:#include 函数原型:int open(count char *pathname, int flags );    int open(count char *pathname, int flags, mode_t mode )open()函数以flags|mo

2015-12-23 11:03:11 969

原创 文件管理

文件操作三步:打开、读写、关闭。一、文件的打开与关闭FILE *fp;fp = fopen("test.txt", "r");......fclose(fp);二、文件操作函数1、单字符的读写函数int fputc(int ch, FILE *fp);int fgetc(FILE *fp);每次写入和读入一个字符,文件位置指针会自动指向下一个字符

2015-12-22 16:26:33 338

原创 指针与数组

指针和数组关系很密切,可以说是形影不离。从本质上讲,数组和指针都是通过地址来操作数据的。由数组下标来完成的操作都可用指针来实现,指针比数组更灵活;但数组比指针规整,更容易控制。char ch_array[8];char *ch_ptr;ch_ptr = ch_array;等价于ch_ptr = &ch_array[0];这样赋值以后,除了可以通过ch_array

2015-12-22 16:15:49 260

原创 看书杂记--static、extern

一、函数中的局部变量都是动态分配存储空间的,数据存储在动态存储区中,函数调用结束后即消失,释放存储空间。若是希望函数中的局部变量在调用结束后仍保留原值,也不释放存储单元,则可使用关键字static声明局部变量是静态变量。函数编译时在静态存储区分配存储单元,函数调用结束后不释放存储单元,直到程序运行结束才释放存储单元。#include void func(int x){i

2015-12-22 16:01:01 272

转载 sed&awk基本使用方法

sed 工具简介在了解了一些正规表示法的基础应用之后,再来呢?呵呵~两个东西可以玩一玩的,那就是 sed 跟 awk 了! 这两个家伙可是相当的有用的啊!举例来说,鸟哥写的 logfile.sh 分析登录文件的小程序, 绝大部分分析关键词的取用、统计等等,就是用这两个宝贝蛋来帮我完成的! 那么你说,要不要玩一玩啊?! ^_^我们先来谈一谈 sed 好了,基本上, sed 可以分析 St

2015-12-22 14:53:16 266

转载 Linux命令中使用正则表达式

在使用grep、awk和sed命令时,需要使用正则表达式。比如我通过grep找代码编译结果中是否有错误。或者是否有我代码的错误。这里说下正则表达式基本的应用:• 匹配行首与行尾。• 匹配数据集。• 只匹配字母和数字。• 匹配一定范围内的字符串集。 ^只匹配行首$只匹配行尾*一个单字符

2015-12-22 10:24:33 367

原创 shell学习(4)-运算符(expr)

var=1((var++)) 查看结果: echo $(())echo $varoutput:2还有一种写法:var=1var=$[$var+1]echo $varoutput:2使用expr,需要注意的是其中的那个符号并不是单引号,而是“1”左边的那个键注意:将需要运算的表达式写入在expr 后面,保证参数与运算符号中间有空格隔开。

2015-12-21 17:13:38 509

原创 shell学习(3)-循环语句(for、while、函数)

1、for语句原型1:for 变量 in 取值集合do语句done原型2:for 变量in 文件正则表达式do语句done 原型3:for 变量 in $*do语句done #!/bin/shname=(i am very happy)for i in ${name[*]}do         echo$i

2015-12-21 17:09:23 324

原创 shell学习(2)-控制语句(if、case)

shell控制语句1、if语句(1)if....then 结构if 测试条件then 语句1fi(2)if...then..else结构if 测试条件then 语句1else 语句2fi(3)if..then..elif...then...else结构if 测试条件then 语句1elif 测试条件then 语句2else 语句3

2015-12-21 14:13:46 275

原创 shell学习-基础(变量、输入、输出、数组、环境变量)

1、#!/bin/sh开头2、变量:(1)定义:变量名=字符串。注意:=左右无空格;name=“hello world”,为其赋值带空格的字符串;(2)引用:用$nametest、${name}test。3、通配符:(1)*符号:用于匹配字符串零次或多次出现;匹配的含.和\符号必须显示指出。如*test不能匹配.EXtest,而要用.EX*;*test不能匹配/home/tes

2015-12-21 11:40:56 3432

转载 阻塞与非阻塞

简单点说:阻塞就是干不完不准回来,   非阻塞就是你先干,我现看看有其他事没有,完了告诉我一声我们拿最常用的send和recv两个函数来说吧... 比如你调用send函数发送一定的Byte,在系统内部send做的工作其实只是把数据传输(Copy)到TCP/IP协议栈的输出缓冲区,它执行成功并不代表数据已经成功的发送出去了,如果TCP/IP协议栈没有足够的可用缓冲区来保存你C

2015-12-18 17:27:12 217

转载 select()函数以及FD_ZERO、FD_SET、FD_CLR、FD_ISSET

select函数用于在非阻塞中,当一个套接字或一组套接字有信号时通知你,系统提供select函数来实现多路复用输入/输出模型,原型:int select(int maxfd,fd_set *rdset,fd_set *wrset,fd_set *exset,struct timeval *timeout);   所在的头文件为:#include 和#include    

2015-12-18 11:36:58 211

转载 对stdin,stdout 和STDOUT_FILENO,STDIN_FILENO的学习

在unix系统调用中,标准输入描述字用stdin,标准输出用stdout,标准出错用stderr表示,但在一些调用函数,引用了STDIN_FILENO表示标准输入才,同样,标准出入用STDOUT_FILENO,标准出错用STDERR_FILENO.他们的区别:stdin等是FILE *类型,属于标准I/O,在。STDIN_FILENO等是文件描述符,是非负整数,一般定义为0, 1, 2

2015-12-18 11:09:51 260

转载 fork入门

http://blog.csdn.net/jason314/article/details/5640969一、fork入门知识     一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。    一个进程调用fork()函数

2015-12-18 10:20:40 243

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除