
UNIX/Linux
文章平均质量分 69
michaelrun
这个作者很懒,什么都没留下…
展开
-
UNIX中getopt()使用心得
getopt()是UNIX中分析命令行参数的一个函数,很多论坛上有关于它用法的一些讲解,但其描述语言总会令初学者迷茫不堪,这个函数的代码我也没有看到,只是通过一些输入输出来大概认识它。以下就是我自己的一些心得,希望对大家的使用有所帮助。表头文件 #include函数原型 int getopt(int argc, char * const argv[], const char* opt转载 2009-01-21 21:01:00 · 1217 阅读 · 1 评论 -
linux内核学习
1. 内核学习方法,编译、调试等常见问题1.1 关于编译升级内核到2.6.0的一些问题 作者:ommm http://linux.chinaunix.net/bbs/thread-281831-1-5.html1.2 VMWare Workstation 6.0调试Linux Kernel,竟如此方便 作者:albcamus http://linux.chinaunix转载 2010-05-30 12:17:00 · 8204 阅读 · 1 评论 -
linux内核学习
1. 内核学习方法,编译、调试等常见问题1.1 关于编译升级内核到2.6.0的一些问题 作者:ommm http://linux.chinaunix.net/bbs/thread-281831-1-5.html1.2 VMWare Workstation 6.0调试Linux Kernel,竟如此方便 作者:albcamus http://linux.chinaunix转载 2010-05-30 12:17:00 · 1005 阅读 · 0 评论 -
线程终止
这是一个关于Posix线程编程的专栏。作者在阐明概念的基础上,将向您详细讲述Posix线程库API。本文是第四篇将向您讲述线程中止。<br />线程终止方式<br />一般来说,Posix的线程终止有两种情况:正常终止和非正常终止。线程主动调用pthread_exit()或者从线程函数中return都将使线程正常退出,这是可预见的退出方式;非正常终止是线程在其他线程的干预下,或者由于自身运行出错(比如访问非法地址)而退出,这种退出方式是不可预见的。<br /> <br /><br /><br />回页首<b原创 2010-08-02 11:46:00 · 742 阅读 · 0 评论 -
暴雪hash算法
先提一个简单的问题,如果有一个庞大的字符串数组,然后给你一个单独的字符串,让你从这个数组中查找是否有这个字符串并找到它,你会怎么做? 有一个方法最简单,老老实实从头查到尾,一个一个比较,直到找到为止,我想只要学过程序设计的人都能把这样一个程序作出来,但要是有程序员把这样的程序交给用户,我只能用无语来评价,或许它真的能工作,但...也只能如此了。最合适的算法自然是使用HashTable(哈希表),先介绍介绍其中的基本知识,所谓Hash,一般是一个整数,通过某种算法,可以把一个字符串"压缩" 成一个整数原创 2010-11-02 20:53:00 · 5349 阅读 · 0 评论 -
常用的UNIX系统调用跟踪调试工具
AIX,solaris<br /><br /> 可用自带的truss<br />Linux:<br /><br />可用自带的strace或ltrace<br />HP-UX:<br /><br />可用tusc 需要下载tusc进行安装.<br />1. 从http://hpux.connect.org.uk/hppd/hpux/Sysadmin/tusc-7.10/下载tusc<br />2. 安装<br /> swinstall -s /slview/tusc-7.10-hppa-11.11原创 2011-03-02 09:34:00 · 900 阅读 · 0 评论 -
Unix,进程,线程,同步,互斥,通信
在POSIX线程(pthread)情况下 1. 互斥量:pthread_mutex_t 相关函数: PTHREAD_MUTEX_INITIALIZER phread_mutex_init phread_mutex_destroy phread_mutex_lock转载 2011-03-02 09:41:00 · 1196 阅读 · 0 评论 -
UNIX进程管理
<br /><br />8.1 进程的基本概念 <br />8.1.1进程 <br />进程是正在执行的一个程序的实例,通常是由程序,数据集合和进程控制块(Process Control Block 简称PCB)三个部分组成。 <br />程序部分 描述了进程所要完成的功能。 <br />数据集合 包括两个方面的内容,即程序运行时所需要的数据部分和工作区。 <br />进程控制块 含有进程的描述信息和控制信息,是进程动态特性的集中反映,它是系统对进程施行识别和控制的依据。 <br /><br /转载 2011-03-02 11:06:00 · 702 阅读 · 0 评论 -
strace 命令是一种强大的工具
<br /> strace 命令是一种强大的工具,它能够显示所有由用户空间程序发出的系统调用。<br /> strace 显示这些调用的参数并返回符号形式的值。strace 从内核接收信息,而且不需要以任何特殊的方式来构建内核。<br /> 下面记录几个常用 option . <br /> 1 -f -F选项告诉strace同时跟踪fork和vfork出来的进程<br /> 2 -o xxx.txt 输出到某个文件。<br /> 3 -e execve 只记录 execve 这类系统调用 <br原创 2011-03-02 09:37:00 · 774 阅读 · 0 评论 -
SQLite Version3.3.6源代码文件结构
Version 3.3.6源代码文件结构 ——整理:hustcat 2009-2-19文件名称大小byte备注API部原创 2011-08-08 23:25:30 · 606 阅读 · 0 评论 -
sqlite与mysql分析
http://www.cnblogs.com/hustcat/archive/2009/02/12/1389448.html原创 2011-08-08 23:26:37 · 505 阅读 · 0 评论 -
VIM 总结
vimrc:This is the main configuration file for Vim. It exists in two versions—globaland personal.To find where it is located by opening vim and executing the following command in normal mode: ech翻译 2011-12-03 00:41:39 · 740 阅读 · 0 评论 -
正则表达式
正则表达式的威力在于其能够在模式中包含选择和循环,正则表达式用一些重复规则来表达循环匹配。 常用的重复如下: 重复说明*重复零次或更多次+重复 1 次或更多次?重复零次或 1 次{n}重复 n 次{n,}原创 2012-01-16 11:13:16 · 451 阅读 · 0 评论 -
Makefile 连接静态库注意事项
CC = gcc#CFLAGS = -I. -I/sbilling/charging/src/lib/ -D_REENTRANT -g -I/usr/include/mysql/#LZIBS = -L. -lm -L/usr/lib64/mysql/ -lmysqlclient -L/sbilling/charging/src/lib/ -ldciCFLAGS = -I. -I原创 2012-11-27 11:06:57 · 1734 阅读 · 0 评论 -
shell 整型变量自增(加1)的几种方法
#!/bin/sha=1a=$(($a+1))a=$[$a+1]a=`expr $a + 1`let a++let a+=1((a++))echo $a转载 2012-11-23 09:32:40 · 1872 阅读 · 0 评论 -
什么是module 以及如何写一个module
什么是<span class="t_tag" onclick="function onclick(){function onclick(){tagshow(event)}}">module 以及如何写一个module作 者: 庄荣城不知道在什幺时候,Linux 出现了 module 这种东西,的确,它是 Linux 的一大革新。有了 module 之后,写转载 2010-05-30 12:13:00 · 1342 阅读 · 0 评论 -
超长短信的处理办法
GSM 03.40规范(TP-06 1999-12-15 7.4.0)中规定了SME对于超长短信的合并处理。规范制定至今,已经超过6年,绝大多数正在使用的手机,都支持这一功能。CMPP协议中,CMPP_SUBMIT_MESSAGE中有两个字段pk_total和pk_numer,恰看起来,这就是发送超长短信的设置参数,其实不然,这两个参数的设置,应该是没有用处。发送超长短信,需要做两件事情:设置转载 2010-05-25 21:15:00 · 531 阅读 · 0 评论 -
TCP 三次握手
TCP/IP 三次握手及状态变迁图2009-09-23 10:49不用多说,经典的TCP/IP三次握手及状态变迁图 =============================================================================================================原创 2010-01-19 19:30:00 · 700 阅读 · 0 评论 -
献给不懂'/0'的程序员们
/************************************************************************//* 第一种测试方法 *//**********************************************************原创 2009-02-08 19:24:00 · 587 阅读 · 0 评论 -
read/write和fread/fwrite有什么区别
1,fread是带缓冲的,read不带缓冲. 2,fopen是标准c里定义的,open是POSIX中定义的. 3,fread可以读一个结构.read在linux/unix中读二进制与普通文件没有区别. 4,fopen不能指定要创建文件的权限.open可以指定权限. 5,fopen返回指针,open返回文件描述符(整数). 6,linux/unix中转载 2009-02-08 18:07:00 · 2506 阅读 · 1 评论 -
malloc、calloc区别 分配在哪里
函数malloc()和calloc()都可以用来动态分配内存空间,但两者稍有区别。malloc()函数有一个参数,即要分配的内存空间的大小: void*malloc(size_tsize);calloc()函数有两个参数,分别为元素的数目和每个元素的大小,这两个参数的乘积就是要分配的内存空间的大小。void*calloc(size_tnumElements,size_tsizeOfElem转载 2009-07-18 14:57:00 · 3213 阅读 · 2 评论 -
二维数组的动态分配及参数传递
1. C语言动态分配二维数组(1)已知第二维Code-1char (*a)[N];//指向数组的指针a = (char (*)[N])malloc(sizeof(char *) * m);printf("%d/n", sizeof(a));//4,指针printf("%d/n", sizeof(a[0]));//N,一维数组free(a);转载 2009-05-05 20:12:00 · 1980 阅读 · 0 评论 -
我该如何动态分配多维数组?
传统的解决方案是分配一个指针数组, 然后把每个指针初始化为动态分配的“列”。以下为一个二维的例子:#include int **array1 = malloc(nrows * sizeof(int *));for(i = 0; i array1[i] = malloc(ncolumns * sizeof(int));当然, 在真实代码中, 所有的malloc 返回值都必须检查。你也可以使用siz原创 2009-05-10 23:36:00 · 763 阅读 · 0 评论 -
去掉字符串中空格
void rtrim(char *str) { char *ps = str; /* find tail */ while( *ps != /0 ) ps++; ps—; while( (ps >= str) && (*ps == ) ) ps—; *(++ps) = /0; } void ltrim(char *str) {原创 2009-07-18 15:43:00 · 579 阅读 · 0 评论 -
snprintf函数使用(Windows与Linux版本)
int snprintf(char *restrict buf, size_t n, const char * restrict format, ...);函数说明:最多从源串中拷贝n-1个字符到目标串中,然后再在后面加一个0。所以如果目标串的大小为n 的话,将不会溢出。函数返回原创 2009-05-28 11:39:00 · 20866 阅读 · 2 评论 -
关于SIGPIPE导致的程序退出
当服务器close一个连接时,若client端接着发数据。根据TCP协议的规定,会收到一个RST响应,client再往这个服务器发送数据时,系统会发出一个SIGPIPE信号给进程,告诉进程这个连接已经断开了,不要再写了。 根据信号的默认处理规则SIGPIPE信号的默认执行动作是terminate(终止、退出),所以client会退出。若不想客户端退出可以把SIGPIPE设为SIG_IG转载 2009-06-02 21:00:00 · 898 阅读 · 0 评论 -
TCP/IP编程基础——超时、多路复用、非阻塞
在TCP连接中,recv等函数默认为阻塞模式(block),即直到有数据到来之前函数不会返回,而我们有时则需要一种超时机制使其在一定时间后返回而不管是否有数据到来,这里我们就会用到setsockopt()函数: int setsockopt(int s, int level, int optname, void* optval, socklen_t* optlen); 这里我们要涉转载 2009-06-08 14:40:00 · 767 阅读 · 0 评论 -
根据成员变量的地址推算出结构体变量的地址
我们在书写C程序的时候,有时候需要根据结构体成员变量的地址,得到结构体的地址,特别是我们想用C来实现C++的继承特性的时候。我们对问题的分析如下:输入:一个结构体定义type,这个结构体中某个成员变量的名字member以及它的地址ptr输出:包含此成员变量的结构体的地址为了便于分析,我们给出一个实例来说明struct father_t {int a;转载 2009-09-27 14:09:00 · 1061 阅读 · 0 评论 -
说说unix下的夏令时问题
这个问题搞的我相当郁闷,本来我的文件是按批次输出,结果到了5分钟,文件还没输出,我开始以为是程序配置错误了,把其他省份的正确配置拿过来完全的一样的搞还是不行。接着开始查代码,以为系统不同,用oslevel -r来看结果版本都是AIX 5300,这些可纳闷,在另外一个同样的机器上能正确运行,在这里却不行,然后一步步跟踪,结果就发现到了mktime函数转换时间时出问题了,转换前后正好差了一个小时。发现原创 2009-09-29 13:05:00 · 5248 阅读 · 0 评论 -
使用socket实现进程间通信:(UNIX domain中面向连接通信)
使用套接字除了可以实现网络间不同主机间的通信外,还可以实现同一主机的不同进程间的通信,且建立的通信是双向的通信。man unix内容如下:NAME( 名称) unix, PF_UNIX, AF_UNIX, PF_LOCAL, AF_LOCAL ? 用于本地内部进程通讯的套接 字。SYNOPSIS( 总览 ) #include #i转载 2009-10-11 22:32:00 · 2187 阅读 · 0 评论 -
手机短信接口标准
客户端通过TCP连接到服务器(202.99.114.235:8020):连接成功后客户端应首先发送注册串为:Login Name=【注册名】&Pwd=【注册密码】&Type=【注册类型,0:接收和发送;1:接收;2:发送;默认为0】(回车换行)如果所有服务注册成功,服务器返回给客户端字符串:Pass(回车换行)否则将断开连接。 指令集:1:分发中心向服务方发送用户的转载 2009-10-14 08:33:00 · 6593 阅读 · 2 评论 -
手机短信的PDU编码和解码
共有三种方式来发送和接收SMS信息:Block Mode, Text Mode和PDU Mode。其中PDU Mode被所有手机支持,可以使用任何字符集,这也是手机默认的编码方式。发送短消息常用Text和PDU(Protocol DataUnit,协议数据单元)模式。使用Text模式收发短信代码简单,实现起来十分容易,但最大的缺点是不能收发中文短信;而PDU模式不仅支持中文短信,转载 2009-10-17 13:29:00 · 861 阅读 · 0 评论 -
非常有用的一些Linux命令解析
一 top命令top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。下面详细介绍它的使用方法。认识top的显示结果top命令的显示结果如下所示: top - 01:06:48 up 1:22, 1 user, load average: 0.06, 0.60, 0转载 2012-11-23 09:03:30 · 5743 阅读 · 0 评论