C语言
wenph2008
我只想静静的写会儿代码~
展开
-
Linux C语言头文件搜索路径
对所有用户有效在/etc/profile增加以下内容。只对当前用户有效在Home目录下的.bashrc或.profile里增加内容。#在PATH中找到可执行文件程序的路径。export PATH=$PATH:$HOME/bin#gcc找到头文件的路径C_INCLUDE_PATH=/usr/include/libxml2:/MyLibexport C_INCLUDE_PA原创 2013-04-27 23:16:20 · 634 阅读 · 0 评论 -
二分查找
int Find(int arr[], int key,int length){ assert(arr!=NULL&&length>0); int low=0,high=length,mid; while(low<=high) { mid=(low+high)/2; if(arr[mid]==key) return mid;原创 2013-04-27 23:10:22 · 536 阅读 · 0 评论 -
【面试中的】C语言实现字符串函数
C语言字符串函数实现源码汇总2008年05月18日 星期日 16:54 #include char * ___strtok = NULL; char * strcpy(char * dest,const char *src) { char *tmp = dest; while ((*dest++ = *src++) != '\0'原创 2013-04-27 23:09:25 · 712 阅读 · 0 评论 -
vim+cscope
C语言如下做:>sudo apt-get install cscope然后到你的项目根目录下。>find . -name '*.h' -o -name '*.c' >cscope.files>cscope -bkq -i cscope.files然后会生成cscope.out文件和cscope.files文件。OK了!使用:>cd [项目根目录]>cscope原创 2013-04-27 23:23:46 · 515 阅读 · 0 评论 -
使用gdb调试多线程程序总结
一直对GDB多线程调试接触不多,最近因为工作有了一些接触,简单作点记录吧。 先介绍一下GDB多线程调试的基本命令。 info threads 显示当前可调试的所有线程,每个线程会有一个GDB为其分配的ID,后面操作线程的时候会用到这个ID。 前面有*的是当前调试的线程。 thread ID 切换当前调试的线程为指定ID的线程。 break thread_test.c:123 thread all在转载 2013-05-04 15:35:29 · 712 阅读 · 0 评论 -
ubuntu core文件
一.相关知识1)何为core文件? 核心文件(core file),也称核心转储(core dump),是操作系统在进程收到某些信号而终止运行时,将此时进程地址空间的内容以及有关进程状态的其他信息写出的一个磁盘文件。这种信息往往用于调试。[摘自百度百科] A core dump is the recorded state of the worki转载 2013-05-09 20:36:26 · 897 阅读 · 0 评论 -
用的效果还不错(C语言聊天室)
原创 2013-05-13 15:14:31 · 1059 阅读 · 0 评论 -
automake搭建项目工程例子讲解
Automake环境的搭建 【服务器环境】 LINUX版本:Ubuntu 9.10 Automake版本: (GNU automake) 1.11Autoconf版本: (GNU Autoconf) 2.64 【介绍】虽然上面只提到了automake和autoconf工具,但是在实际使用过程中,还需要autoscan,aclocal工具。也就转载 2013-05-29 22:32:22 · 856 阅读 · 0 评论 -
Libevent最佳I/O复用(Multiplexing)机制的确定
libevent的初衷就是设计一个跨平台的轻量级I/0框架,由于历史问题,各平台的I/O复用机制难以统一。因此,这部分处理跨平台的方法值得重点关注。 eventop在源码中定义如下:static const struct eventop *eventops[]={#ifdef HAVE_EVENT_PORTS &evportops,#转载 2013-06-07 21:41:11 · 1138 阅读 · 0 评论 -
一个Linux下C线程池的实现
什么时候需要创建线程池呢?简单的说,如果一个应用需要频繁的创建和销毁线程,而任务执行的时间又非常短,这样线程创建和销毁的带来的开销就不容忽视,这时也是线程池该出场的机会了。如果线程创建和销毁时间相比任务执行时间可以忽略不计,则没有必要使用线程池了。 下面是Linux系统下用C语言创建的一个线程池。线程池会维护一个任务链表(每个CThread_worker结构就是一个任务)。 p转载 2013-05-01 21:55:41 · 531 阅读 · 0 评论 -
能被4整除的年份是闰年,年份尾00的能被400整除的年份是闰年
能被4整除的年份是闰年,年份尾00的能被400整除的年份是闰年原创 2013-04-27 23:14:51 · 1372 阅读 · 0 评论 -
带环单链表求中点
最近一直在无脑敲代码,结果今天下午被一个准备各种面试题的同学问了一个带环单链表的问题,发现最近的智商真心不够用,想了稍长时间,最后算是想明白了。因为最后想到头大的时候,百度了一下,所以只好选择分类为转载,下面就建立在自己思考的基础上,讲解一下,如又不对的地方,望指正。首先,对于一个n节点的单链环,如果给定一个开始节点n0,然后用a,b两个指针,分别以1和2的步长遍历,那么在a环原创 2013-04-27 23:14:03 · 602 阅读 · 0 评论 -
比较全面的gdb调试命令
用GDB调试程序 GDB是一个强大的命令行调试工具。大家知道命令行的强大就是在于,其可以形成执行序列,形成脚本。UNIX下的软件全是命令行的,这给程序开发提代供了极大的便利,命令行软件的优势在于,它们可以非常容易的集成在一起,使用几个简单的已有工具的命令,就可以做出一个非常强大的功能。 于是UNIX下的软件比Windows下的软件更能有机地结合,各自发挥各自的长处,组合成更原创 2013-04-27 23:11:29 · 533 阅读 · 0 评论 -
Linux线程池
/* 小规模的Linux线程池 written by luoxiongwei E-mail:luo6620378li@qq.com Welcom to report bugs! 下一步计划给工作队列中的任务添加优先级 实现一个优先队列。*/#ifndef __THREADPOOLS#define __THREADPOOLS#include #include #includ转载 2013-05-01 21:57:46 · 754 阅读 · 0 评论 -
C/C++内存管理详解
程序员们经常编写内存管理程序,往往提心吊胆。如果不想触雷,唯一的解决办法就是发现所有潜伏的地雷并且排除它们,躲是躲不了的。本文的内容比一般 教科书的要深入得多,读者需细心阅读,做到真正地通晓内存管理。1、内存分配方式内存分配方式有三种:(1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。(2原创 2013-04-27 23:17:05 · 520 阅读 · 0 评论 -
时间复杂度算法主定理
主要记住nlogba和f(n)的关系,即可,大于为情况1,等于为情况2,小于为情况3.T(n)=aT(n/b)+f(n)1) e>0, F(n)=O(nlogba-e),复杂度为T(n)=theta(nlogba):例如T(n)=9T(n/3)+ n, theta(n2)2) f(n)=theta(nlogba),复杂度为T(n)=theta(nl原创 2013-04-27 23:15:31 · 1128 阅读 · 0 评论 -
Linux X86获取汇编指令码
1,用户态程序gcc test.c则生成a.out2,调用命令objdump -d a.out则显示反汇编指令,即可得到相应的汇编指令码原创 2013-04-27 16:49:12 · 720 阅读 · 0 评论 -
C语言中printf格式化输出函数
用 法: int printf(const char *format,[argument]); format 参数输出的格式,定义格式为: %[flags][width][.perc] [F|N|h|l]type 规定数据输出方式,具体如下: 1.type 含义如下: d 有符号10进制整数 i 有符号10进制整数转载 2013-04-29 18:25:39 · 845 阅读 · 0 评论 -
如何自己编写Makefile
相信很多朋友都有过这样的经历,看着开源项目中好几页的makefile文件,不知所云。在日常学习和工作中,也有意无意的去回避makefile,能改就不写,能用ide就用ide。其实makefile并没有想象的那么难写,只要你明白了其中的原理,自己实践几次。你也可以自己写makefile,让别人对你头来羡慕的目光。 下面本人介绍一下自己的学习成果,初学阶段,欢迎大家多多指正。 简单转载 2013-04-29 16:44:43 · 441 阅读 · 0 评论 -
子进程分父进程时间片的问题
在书上看到一段这样的话:在kernel 2.6中时间片的计算是分散的,具体的计算时间可以用task_timeslice(),也可以用其他方法。a.进程创建时,将父进程的时间片分一半给子进程,同时父进程的时间片减半。b.进程用完时间片以后,需要重新计算时间片,并将进程插入到相应的运行队列。c.进程退出时,根据first_timeslice的值来决定是否将子进程的时间片返还给父进程原创 2013-07-03 15:20:39 · 1277 阅读 · 0 评论