09 2013 档案
摘要:函数名: signal表头文件#include功 能:设置某一信号的对应动作函数原型:void (*signal(int signum,void(* handler)(int)))(int);或者:typedef void(*sig_t) ( int );sig_t signal(int signum,sig_t handler);参数说明:第一个参数signum指明了所要处理的信号类型,它可以取除了SIGKILL和SIGSTOP外的任何一种信号。第二个参数handler描述了与信号关联的动作,它可以取以下三种值:(1)一个无返回值的函数地址此函数必须在signal()被调用前申明,handl
阅读全文
摘要:函数说明参考网址http://linux.die.net/man/3/ (library call)#include extern int h_errno;struct hostent *gethostbyname(const char *name);作用:将主机域名转成IP地址。参数:主机域名。返回值:hostent结构体,如下:NULL表示失败。struct hostent {char *h_name; char **h_aliases; int h_addrtype; int h_length; char **h_addr_list; }#define h_addr h_addr_lis
阅读全文
摘要:ping 命令用于查看网络上的主机是否在工作,它向该主机发送ICMPECHO_REQUEST 包。有时我们想从网络上的某台主机上下载文件,可是又不知道那台主机是否开着,就需要使用ping 命令查看。ping命令的一般格式为:ping [-dfnqrRv][-c 发送次数][-i 间隔秒数][-I 网络界面][-l 前置载入][-p 范本样式][-s 数据包大小][-t 存活数值][主机名或IP地址]参数说明:-d 使用Socket的SO_DEBUG功能。-f 极限检测。大量且快速地送网络封包给一台机器,看它的回应。-n 只输出数值。-q 不显示任何传送封包的信息,只显示最后的结果。-r 忽略普
阅读全文
摘要:Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如connect、accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回)。可是使用Select就可以完成非阻塞(所谓非阻塞方式non-block,就是进程或线程执行此函数时不必非要等待事件的发生,一旦执行肯定返回,以返回值的不同来反映函数的执行情况,如果事件发生则与阻塞方式相同,若事件没有发生则返回一个代码来告知事件未发生,
阅读全文
摘要:本文编辑整理自:http://hi.baidu.com/7828058/blog/item/256e16decd1a385e94ee3784.htmlhttp://www.ibm.com/developerworks/cn/linux/thread/posix_threadapi/part1/ Posix线程中的线程属性pthread_attr_t主要包括scope属性、detach属性、堆栈地址、堆栈大小、优先级。在pthread_create中,把第二个参数设置为NULL的话,将采用默认的属性配置。pthread_attr_t的主要属性的意义如下:__detachstate,表示新线程是否
阅读全文
摘要:【sigaction系统调用】功能描述:处理信号。既可用于设定对任意信号的处理方式,也可用于检验该信号的目前预设处置方式。用法:#include int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact);参数:signum:除了SIGKILL和SIGSTOP之外的其它任何信号编码。act:如果值非NULL,将安装为signum关联信号的新处理方式。oldact:如果值非NULL,存储以前对signum关联信号的处理方式。sigaction的结构形态如下:struct sigaction {
阅读全文
摘要:本文可做为TCP/IP组播技术的入门材料,文中介绍了组播通 信的概念及原理,以及用于组播应用编程的Linux API的详细资料。为了使读者更加完整的了解Linux 组播的整体概念,文中对实现该技术的核心函数也做了介绍。在文章的最后给出了一个简单的C语言套接字编程例子,说明如何创建组播应用程序。 一、导言 在网络中,主机间可以用三种不同的地址进行通信: 单播地址(unicast):即在子网中主机的唯一地址(接口)。如IP地址:192.168.100.9或MAC地址:80:C0:F6:A0:4A:B1。 广播地址:这种类型的地址用来向子网内的所有主机(接口)发送数据。如广播...
阅读全文
摘要:【 getsockopt/setsockopt系统调用】功能描述:获取或者设置与某个套接字关联的选 项。选项可能存在于多层协议中,它们总会出现在最上面的套接字层。当操作套接字选项时,选项位于的层和选项的名称必须给出。为了操作套接字层的选项,应该 将层的值指定为SOL_SOCKET。为了操作其它层的选项,控制选项的合适协议号必须给出。例如,为了表示一个选项由TCP协议解析,层应该设定为协议 号TCP。用法:#include #include int getsockopt(int sock, int level, int optname, void *optval, socklen_t *optl
阅读全文
摘要:一.gettimeofday()函数的使用方法:1.简介:在C语言中可以使用函数gettimeofday()函数来得到时间。它的精度可以达到微妙2.函数原型:#includeintgettimeofday(struct timeval*tv,struct timezone *tz )3.说明:gettimeofday()会把目前的时间用tv 结构体返回,当地时区的信息则放到tz所指的结构中4.结构体:1>timevalstruct timeval{ long tv_sec;/*秒*/ long tv_usec;/*微妙*/};2>timezone 结构定义为:struct time
阅读全文
摘要:回调函数是一个程序员不能显式调用的函数;通过将回调函数的地址传给调用者从而实现调用。回调函数使用是必要的,在我们想通过一个统一接口实现不同的内容,这时用回掉函数非常合适。比如,我们为几个不同的设备分别写了不同的显示函数:void TVshow(); void ComputerShow(); void NoteBookShow()...等等。这是我们想用一个统一的显示函数,我们这时就可以用回掉函数了。void show(void (*ptr)()); 使用时根据所传入的参数不同而调用不同的回调函数。不同的编程语言可能有不同的语法,下面举一个c语言中回调函数的例子,其中一个回调函数不带参数,另..
阅读全文
摘要:举个排序的例子#include #include typedef struct person {int age;char name[20];double height;} person;int sortOnAge(person* a, person* b) // 以年龄排序,用于回调{return a->age age;}int sortOnName(person* a, person* b)// 以姓名排序,用于回调{return strcmp(a->name, b->name);}int sortOnHeight(person* a, person* b)// 以身高排序
阅读全文
摘要:内核模块是Linux内核向外部提供的一个插口,其全称为动态可加载内核模块(Loadable Kernel Module,LKM),我们简称为模块。Linux内核之所以提供模块机制,是因为它本身是一个单内核(monolithic kernel)。单内核的最大优点是效率高,因为所有的内容都集成在一起,但其缺点是可扩展性和可维护性相对较差,模块机制就是为了弥补这一缺陷。一、什么是模块模块是具有独立功能的程序,它可以被单独编译,但不能独立运行。它在运行时被链接到内核作为内核的一部分在内核空间运行,这与运行在用户空间的进程是不同的。模块通常由一组函数和数据结构组成,用来实现一种文件系统、一个驱动程序或其
阅读全文
摘要:一、互斥锁1. 初始化:在Linux下, 线程的互斥量数据类型是pthread_mutex_t. 在使用前, 要对它进行初始化:对于静态分配的互斥量, 可以把它设置为PTHREAD_MUTEX_INITIALIZER, 或者调用pthread_mutex_init.对于动态分配的互斥量, 在申请内存(malloc)之后, 通过pthread_mutex_init进行初始化, 并且在释放内存(free)前需要调用pthread_mutex_destroy.原型:int pthread_mutex_init(pthread_mutex_t *restrict mutex, const pthrea
阅读全文
摘要:1. 互斥锁创建 有两种方法创建互斥锁,静态方式和动态方式。POSIX定义了一个宏PTHREAD_MUTEX_INITIALIZER来静态初始化互斥锁,方法如下: pthread_mutex_t mutex=PTHREAD_MUTEX_INITIALIZER; 在LinuxThreads实现中,pthread_mutex_t是一个结构,而PTHREAD_MUTEX_INITIALIZER则是一个结构常量。 动态方式是采用pthread_mutex_init()函数来初始化互斥锁,API定义如下:int pthread_mutex_init(pthread_mutex_t *mutex, co.
阅读全文
摘要:yum是什么yum = Yellow dog Updater, Modified主要功能是更方便的添加/删除/更新RPM包.它能自动解决包的倚赖性问题.它能便于管理大量系统的更新问题 yum特点可以同时配置多个资源库(Repository)简洁的配置文件(/etc/yum.conf)自动解决增加或删除rpm包时遇到的倚赖性问题使用方便保持与RPM数据库的一致性yum安装CentOS自带(yum-*.noarch.rpm)#rpm -ivh yum-*.noarch.rpm在第一次启用yum之前首先需要导入系统的RPM-GPG-KEY:#rpm –import /usr/share/doc/ce
阅读全文
摘要:我们在更新CentOS或者Ubuntu的内核时,在执行make menuconfig时可能会出现这样的错误:*** Unable to find the ncurses libraries or the*** required header files.*** ‘make menuconfig’ requires the ncurses libraries.****** Install ncurses (ncurses-devel) and try again.解决方法如下:CentOS:yum install -y ncurses-develUbuntu:sudo apt-get insat
阅读全文
摘要:做为一个RHCA(红帽认证架构师),当然有一些管理yum的小技巧。我原来以为别人都会,后来才发现只有自己知道。好东西当然要分享。 另外,我有一些对生产环境安装软件的朋友一些建议。多用rpm,deb之类的包管理安装,不要使用编译安装。原因有以下几点。1、编译安装麻烦,浪费时间。2、你以后可能都不记的编译的参数,你的下一任维护也麻烦。因为他不清楚你当时是用的什么参数编译。这个你的boss可关心着哦。3、当然,有人一定会讲,编译性能高,其实不见的,出问题的机会也高哦,在讲一个程式性能提高3%有什么用。其实没有多少用。当然,你用LFS的系统做生产环境,那就有分别,因为你任何一个包都是自己编译的。相信你
阅读全文
浙公网安备 33010602011771号