- 博客(37)
- 收藏
- 关注
转载 vim设置方法集锦
先稍为介绍一下 vim. vi 是 unix/linux 下极为普遍的一种文本编辑器, 大部分机器上都有. vi 有各种变种, 在不同的机器上常用不同的变种软件. 其中 vim 比较好用也用得比较广泛. vim 是 Vi IMproved 的缩写, 表示更好的 vi. 我个人觉得它是非常好的编辑器(为了避免 Emacs 粉丝挑眼, 就不说最好了). 没用过的也建议试试看, 当然 vim 对编
2012-03-27 14:01:16 2586
转载 "undefined reference to" 问题解决方法
最近在Linux下编程发现一个诡异的现象,就是在链接一个静态库的时候总是报错,类似下面这样的错误:(.text+0x13): undefined reference to `func' 关于undefined reference这样的问题,大家其实经常会遇到,在此,我以详细地示例给出常见错误的各种原因以及解决方法,希望对初学者有所帮助。1. 链接时缺失了相关目标文件(.o)
2012-03-07 20:13:45 835343 40
转载 Linux中如何创建静态库和动态库
函数库分为静态库和动态库两种。 静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库。 动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在。 程序1: hello.h #ifndef HELLO_H #define HELLO_H void hello(const char *name);
2012-03-05 14:28:25 3124
原创 使用make更新静态库文件
静态库文件也称为“文档文件”,它是一些.o文件的集合。在Linux(Unix)中使用工具“ar”对它进行维护管理。它所包含的成员(member)是若干.o文件。1.1 库成员作为目标一个静态库通常由多个.o文件组成。这些成员(.o文件)可独立的被作为一个规则的目标,库成员作为目标时需要按照如下的格式来书写: ARCHIVE(MEMBER) 注意,这种书写方式只能出现
2012-03-05 14:21:43 2458
原创 大小端及tcp程序
背景知识: 大端:低字节放在高位,高字节放在低位 小端:低字节放在低位,低字节放在高位 网络序为大端模式 如果发送端与接收端的CPU大小端类型一致时,不需要进行数据字节序的转换; 如果不一致,则至少小端CPU上的程序需要进行字节序(大小端)的转换(因为网络序是大端模式,故大端CPU与网络序之间可以
2011-12-03 18:38:02 10902
转载 大小端讲解
详解大端模式和小端模式一、大端模式和小端模式的起源 关于大端小端名词的由来,有一个有趣的故事,来自于Jonathan Swift的《格利佛游记》:Lilliput和Blefuscu这两个强国在过去的36个月中一直在苦战。战争的原因:大家都知道,吃鸡蛋的时候,原始的方法是打破鸡蛋较大的一端,可以那时的皇帝的祖父由于小时侯吃鸡蛋,按这种方法把手指弄破了,因此他的父亲,就下令,命令
2011-12-03 17:51:50 1123
转载 POSIX线程
1.我的系统是否支持多线程如何知道我的系统是否支持多线程呢(POSIX标准)?有两种方法,一种方法是检查系统中的某些重要的头文件,如limits.h、unistd.h等;另外一种方法就是写一个简单的程序测试一下。由于前者比较复杂,所以一般采用后面的方法,即在程序中判断宏_
2011-08-27 11:30:55 1105
转载 select 函数使用方法
Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如 connect、accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等
2011-08-15 16:36:32 12012 1
转载 线程的调度策略2
2.6 Linux有3个scheduling policy#define SCHED_OTHER 0#define SCHED_FIFO 1#define SCHED_RR 2第一个是普通进程的,后两个是实时进程的一般的进程都是普通进程,系统中出现实时进程的机
2011-07-29 17:54:22 1406
原创 线程的调度策略1
函数pthread_attr_setschedpolicy和pthread_attr_getschedpolicy分别用来设置和得到线程的调度策略。名称::pthread_attr_getschedpolicypthread_attr_se
2011-07-29 16:37:39 2122
转载 shell脚本语法
Shell脚本语法 1. 条件测试:test 命令test或[可以测试一个条件是否成立,如果测试结果为真,则该命令的Exit Status为0,如果测试结果为假,则命令的Exit Status为1(注意与C语言的逻辑表示正好相反)。例如测试两个数的大小关系:$ VAR=2$
2011-07-20 10:51:07 2255
转载 Linux的bg和fg命令
我们都知道,在 Windows 上面,我们要么让一个程序作为服务在后台一直运行,要么停止这个服务。而不能让程序在前台后台之间切换。而 Linux 提供了 fg 和 bg 命令,让我们轻松调度正在运行的任务。假设你发现前台运行的一个程序需要很长的时间,但是需要干其他的事情,你就可以
2011-07-14 20:00:36 770
转载 ftok说明
文章一:ftok函数 系统建立IPC通讯(消息队列、信号量和共享内存)时必须指定一个ID值。通常情况下,该id值通过ftok函数得到。 ftok原型 头文件: #include #include 如下: key_t ftok( char * fname,
2011-07-08 10:11:11 9082
转载 共享内存的使用方法
代码1:第一个是写数据:/***** testwrite.c *******/#include #include #include #include typedef struct{ char name[4]; int age;} people;main
2011-07-07 19:49:44 1685
转载 source insight快捷键及使用技巧
退出程序 : Alt+F4重画屏幕 : Ctrl+Alt+Space完成语法 : Ctrl+E复制一行 : Ctrl+K恰好复制该位置右边的该行的字符
2011-07-01 10:04:00 805
转载 双缓存
什么是双缓冲,平滑地滚动页面的实现原理,ARGB8888 和ARGB1555, 假如你的显示器是VGA模式,640×400,也就是虚拟的分辨率是640X800,也就是800线(每一行的数据,称为一条线,也就是640X1 的数据了)。800线的数据存储于Framebuffer,而实际的显示内容,只是400线,Linux内核中的Framebuffer模型中,对应有个变量yof
2011-06-24 09:19:00 777
转载 const 用法
const是一个C语言的关键字,它限定一个变量不允许被改变。使用const在一定程度上可以提高程序的安全性和可靠性,另外,在观看别人代码的时候,清晰理解const所起的作用,对理解对方的程序也有一些帮助。另外CONST在其他编程语言中也有出现,如C++、PHP5、C#.net、HC08 C。 C中CONST的使用: 虽然这听起来很简单,但实际上,const的使用也是c语言中一个比较微妙的地方,微
2011-06-22 14:23:00 600
转载 extern “C”
C文件中可以包含C++代码,CPP文件中也可以包含C代码。在Cpp中加C代码 用 extern "C"{ #include ***} ,在***.h文件中用extern 函数在C文件中加C++代码 不能再用extern "C" 编译,否则会报错 ,用 extern 该函数即可,但在***.h中要用 extern "C" 1.引言 C++语言的创建初衷是“a be
2011-06-09 18:57:00 746
转载 c调用c++的类函数
http://bbs.sjtu.edu.cn/bbscon?board=C&file=M.1300711242.A 在c++中定义了一个类,现在需要在c中调用这个类中的函数。add.h 1 2 class Add{ 3 pu
2011-06-09 18:33:00 6269
原创 《c专家编程》中指针和数组几点说明
不能把一个数组赋值给另一个数组,因为数组作为一个整体不能成为赋值的对象;可以把数组名赋值给一个指针,因为在表达式总得数组名被编译成一个指针。 示例:#include char a[3][5];char *d[3]; diaoyong( char (*b)[5]) //实参为数组的数组,所以形参要采用数组指针的形式{
2011-06-03 11:54:00 644
原创 联合的使用方法
<br />例:<br />#include <stdio.h><br /><br />typedef union tag_Word<br />{<br /> short ret;<br /> unsigned char ch[2];<br />} Word; //联合体中的各变量内存地址相同,大小为最大的最大类型的长度<br /><br />int diayong()<br />{<br /> Word su;<br /> su.ch[0] = 17;<br
2011-06-01 16:17:00 628
原创 二分法插入的实现
<br />数字:<br />typedef struct {<br /> int presetNumber;<br /> int time;<br />} SETUP;<br /> <br />//SETUP为要插入到的结构体数组, insert为要插入的数字,totle为数组长度<br />int insert(SETUP a[], int insert, int *totle)<br />{<br /> int i, j, mid; <br /> i = 0;<br /> j =
2011-05-13 11:45:00 922
转载 给程序计时2-bzero & memset置零的性能比较
<br /> 关于字符数组的初始化,在项目的压力测试中,发现性能明显下降,变怀疑在程序中的若干临时字符数组的初始化(使用bzero)身上。于是修改为首个字符置零的方式而非全部置零的方式初始化,响应得到明显的提升。原来在mp3检索的每一条结果都要进行bzero对临时数组初始化,每一个请求需要30次的 bzero对临时数组的置零。于是想到了,在非必要的情况下,只对临时数组的第一个(或前几个)字符置零的初始化方式对比与使用bzero的话,能够明显提高性能。<br />在此之外,又想起另外两种对数组所有字节都置零的
2011-05-12 10:11:00 701
转载 给程序计时的方法1
Linux下使用clock_gettime给程序计时详解,函数的原型如下:int clock_gettime(clockid_t clk_id, struct timespect *tp);clockid_tclk_id用于指定计时时钟的类型,对于我们Programmr以下三种比较常用:CLOCK_REALTIME, a system-wide realtime clock.CLOCK_PROCESS_CPUTIME_ID, high-resolution timer provided by the CPU
2011-04-30 14:20:00 783
原创 signal 11信号的处理
<br />#include <stdio.h><br />#include <stdlib.h> <br />#include <sys/mman.h><br />#include <fcntl.h><br />#include <unistd.h><br />#include <string.h><br />#include <sys/stat.h><br />#include <signal.h><br />#include <setjmp.h><br /> <br /> char *buf;<
2011-04-30 14:11:00 20977
原创 pthread_cancel 使用方法2
#include #include #define FAILURE 0#define SUCCESS 1#define UNS32 unsigned int#define m_ERROR(format, args...) printf(format, ## args);//fflush(stdout);static pthread_t g_pthre
2011-04-01 11:46:00 1494
原创 pthread_create 函数
#include #include #define FAILURE 0#define SUCCESS 1#define UNS32 unsigned int#define m_ERROR(format, args...) printf(format, ## args);//fflush(stdout);static pthread_t g_pthre
2011-03-31 18:50:00 748
原创 pthread_cancel 使用方法1
#include #include #define FAILURE 0#define SUCCESS 1#define UNS32 unsigned int#define m_ERROR(format, args...) printf(f
2011-03-31 11:46:00 5443
原创 全局变量在多线程中的使用
#include #include #define FAILURE 0#define SUCCESS 1#define UNS32 unsigned int#define m_ERROR(format, args...) printf(format, ## args);//fflush(stdout);static pthread_t g_pthread_wait;static pthread_t g_pthread_signal;static pthread_t g_pthre
2011-03-30 14:50:00 10467
原创 pthread_cond_wait 用法
int pthread_cond_wait(pthread_cont_t *restrict cond, pthread_mutex_t *restrict mutex); 函数的使用方法:使用pthread_cond_wait等待条件变为真,如果在给定的时间内条件不能满足,那么会生成一个代表出错码的返回变量。传递给pthread_cond_wait的互斥量对条件进行保护,调用者把锁住的互斥量传给函数。函数把调用线程放到等待条件的线性列表上,然后对互斥量解锁,这两个操作是原子操作。这样就关闭了条件检查和线程
2011-03-30 13:55:00 2132
转载 gdb 调试技术
GDB调试core文件样例(如何定位Segment fault)core dump又叫核心转储, 当程序运行过程中发生异常, 程序异常退出时, 由操作系统把程序当前的内存状况存储在一个core文件中, 叫core dump. (linux中如果内存越界会收到SIGSEGV信号,然后就会core dump)在程序运行的过程中,有的时候我们会遇到Segment fault(段错误)这样的错误。这种看起来比较困难,因为没有任何的栈、trace信息输出。该种类型的错误往往与指针操作相关。往往可以通过这样的方式进行定
2011-03-29 13:56:00 1279
原创 sscanf的用法
<br />#include <stdio.h><br />#include <stdlib.h><br /> <br />int main(int argc, char **argv)<br />{<br />/*<br /> int on;<br /> int led_no;<br /> int fd;<br /> if (argc != 3 || sscanf(argv[1], "%d", &led_no) != 1 || sscanf(argv[2],"%d", &on)
2011-03-08 12:11:00 1408
原创 几种地址的理解
逻辑地址是指汇编后的地址,线性地址(虚拟地址)是指C代码中(汇编前的地址),物理地址是指实际的地址空间。 段式管理 页式管理 逻辑地址----------->线性地址------------>物理地址在16位的机器中,逻辑地址(偏移量)+基地址=物理地址 (寄存器为16位的,而地址总线为20根,所以16位地址在32位的机器中,段寄存器存放的是段地址的选择器,用该选择器从内存中得到一个32位的段地址,存储单元的物理地址就是该段地址加上段内偏移
2011-02-22 12:29:00 1106
原创 变量的作用域
一个C变量的作用域可以是代码块作用域、函数原型作用域,或者文件作用域。一个代码块是包含在开始花括号和对应的结束花括号之间的一段代码。例如,整个函数体是一个代码块。一个函数内的任一负荷语句也是一个代码块。在代码块中定义的变量具有代码块作用域,从该变量被定义的地方到包含该定义的代码块的末尾该变量均可见。另外,函数的形式参数尽管在函数的开始花括号前进行定义,同样也具有代码块作用域,隶属于包含函数体的代码块。例1:在一个内部代码块中声明的变量,其作用域只局限于该代码块:double blocky(double cl
2011-02-16 10:23:00 744
转载 const 的几种用法
<br />1.指向const对象的指针<br /><br />const int *p;<br />这个p是一个指向int类型const对象的指针,const限定了指针p所指向的类型,而并非p本身。也就是说p本身并不是const。在定义时不需要对它进行初始化,还可以给p重新赋值,使其指向另一个const对象。但不能通过p修改所指向对象的值。<br />示例1:int a=0; p=&a; 可以。<br />示例2:*p=20; 不可以。<br />结论:这种指向const对象的指针只是限制不能修改p指向对
2011-02-13 15:42:00 778
原创 Makefile的使用方法
<br />test.c源码:<br /> #include <stdio.h><br /> void main(void)<br /> {<br /> int sunhao = 9;<br /> #ifdef KT7208<br /> sunhao = 7208;<br /> #endif<br /> #ifdef KT7216<br /> sun
2011-02-13 10:33:00 545
转载 C 语言谜题
<br />1、下面的程序并不见得会输出 hello-std-out,你知道为什么吗?<br />#include<br />#include<br />int main()<br />{<br />while(1)<br />{<br />fprintf(stdout,"hello-std-out");<br />fprintf(stderr,"hello-std-err");<br />sleep(1);<br />}<br />return 0;<br />}<br />参考答案:stdout和std
2011-02-13 10:25:00 607
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人