随笔分类 - C
主要是linux c
摘要:一、功能简介把一个字符串转换成整数二、linux c库函数实现/****long atol(char *nptr) - Convert string to long**Purpose:* Converts ASCII string pointed to by nptr to binary.* Overflow is not detected.**Entry:* nptr = ptr to string to convert**Exit:* return long int value of the string**Exceptions:* ...
阅读全文
摘要:===========最大线程数============== linux 系统中单个进程的最大线程数有其最大的限制 PTHREAD_THREADS_MAX 这个限制可以在 /usr/include/bits/local_lim.h 中查看 对 linuxthreads 这个值一般是 1024,对于 nptl 则没有硬性的限制,仅仅受限于系统的资源 这个系统的资源主要就是线程的 stack 所占用的内存,用 ulimit -s 可以查看默认的线程栈大小,一般情况下,这个值是 8M 可以写一段简单的代码验证最多可以创建多少个线程int main(){ int i = 0; pth...
阅读全文
摘要:功能描述:获取或设定资源使用限制。每种资源都有相关的软硬限制,软限制是内核强加给相应资源的限制值,硬限制是软限制的最大值。非授权调用进程只可以将其软限制指定为0~硬限制范围中的某个值,同时能不可逆转地降低其硬限制。授权进程可以任意改变其软硬限制。RLIM_INFINITY的值表示不对资源限制。用法:#include <sys/resource.h>int getrlimit(int resource, struct rlimit *rlim);int setrlimit(int resource, const struct rlimit *rlim);参数:resource:可能的
阅读全文
摘要:select()系统调用提供一个机制来实现同步多元I/O:#include <sys/time.h>#include <sys/types.h>#include <unistd.h>int select (int n,fd_set *readfds,fd_set *writefds,fd_set *exceptfds,struct timeval *timeout);FD_CLR(int fd, fd_set *set);FD_ISSET(int fd, fd_set *set);FD_SET(int fd, fd_set *set);FD_ZERO(fd_
阅读全文
摘要:我是把hadoop 0.20.2安装到/opt/hadoop目录下,故 HADOOP_HOME=/opt/hadoop而我系统安装的是openjdk-1.6.0,主目录 JAVA_HOME= /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64一、编译$cd /opt/hadoop$ant compile-c++-libhdfs -Dislibhdfs=true二、安装、配置就是解决gcc寻找头文件、连接动态链接库问题以及环境变量。其中gcc寻找头文件以及动态链接库可以通过设置环境变量,也可以通过Makefile来完成。而libhdfs需要用到的JAVA
阅读全文
摘要:一、什么是对齐,以及为什么要对齐:1. 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这就需要各类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。2. 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些特定地址开始存取。其他平台可能没有这种情况, 但是最常见的是如果不按照适合其平台的要求对数据存放进行对齐,会在存取效率上带来损失。比如有些平台每次读都是从偶地址开始,如果一个int型(假设为 32位)如果存放
阅读全文
摘要:1。自动连接handler name相同的信号和函数。Thesome_signal_handler_funcfunction is not referenced anywhere in the program explicitely, but if any signals are defined in the interface description that use "some_signal_handler_func" as the handler name, then this function will automatically be connected.2.如果
阅读全文
摘要:1、更详细资料参见http://learn.akae.cn/media/apas03.htmlhttp://www.ibm.com/developerworks/cn/linux/i18n/unicode/linuni/UTF-8 and Unicode FAQ:http://www.linuxforum.net/books/UTF-8-Unicode.html2、部分示例代码#include <stdio.h>#include <locale.h>#include <wchar.h>int main(void){ wchar_t wstr=L"你
阅读全文
摘要:定义FILE *fp; //文件指针、句柄int fd; //文件描述符char pathname[1024]; //文件路径1、pathname --> fp,fdfp = fopen(pathname,"r");fd = open(pathname,O_RDONLY);2、fd --> fp,pathnamefp = fdopen(fd,"r");下面这个函数能够实现由fd转成pathname,int get_pathname_from_fd(int fd, char pathname[], int n){ char buf[1024];
阅读全文
摘要:1、linux c代码实现#include <netdb.h>#include <stdio.h> #include <stdlib.h>#include <string.h>#include <unistd.h>#include <arpa/inet.h>#include <netinet/in.h>#include <sys/socket.h>typedef enum {false,true}bool;int main() { bool flag; int sock; char **pptr =
阅读全文
摘要:1、安装库libesmtp-develyum install libesmtp-devel或apt-get install libesmtp-devel如果没法用命令安装,就上http://www.stafford.uklinux.net/libesmtp/自己下载包安装。2、不认证即可发信息#define _XOPEN_SOURCE#include <stdio.h>#include <stdlib.h>#include <ctype.h>#include <unistd.h>#include <getopt.h>#include
阅读全文
摘要:char str[80]; FILE *fp; //chang directory to our command bzero(str,sizeof(str)); /* 判断argv[0]中是否包含'/', * 如果包含,则说明使用的是绝对/相对路径来寻找command所在目录 *如果不包含,则说明command是被安装到/usr/bin等系统定义的目录中,需要查找命令所在目录 */ if(NULL == rindex(argv[0],'/')){ //命令在系统预定义目录中 sprintf(str,"which %s"...
阅读全文
摘要:引子无论是在Linux还是在Unix环境中,make都是一个非常重要的编译命令。不管是自己进行项目开发还是安装应用软件,我们都经常要用到make或 make install。利用make工具,我们可以将大型的开发项目分解成为多个更易于管理的模块,对于一个包括几百个源文件的应用程序,使用make和 makefile工具就可以轻而易举的理顺各个源文件之间纷繁复杂的相互关系。但是如果通过查阅make的帮助文档来手工编写Makefile,对任何程序员都是一场挑战。幸而有GNU 提供的Autoconf及Automake这两套工具使得编写makefile不再是一个难题。本文将介绍如何利用 GNU Auto
阅读全文
摘要:原文地址:http://www.linuxforum.net/books/gcodestd.htmlGNU编码标准引用私有程序接受他人的奉献修改日志(Change Logs)与其它实现的兼容性Makefile惯例Makefile的通用惯例Makefile中的工具为用户提供的标准目标为指明命令而提供的变量为安装目录而提供的变量配置是如何进行的使用C以外的语言格式化你的源代码为你的工作写注释清晰地使用C语言成分命名变量和函数使用非标准的特征适用于所有程序的程序行为格式化错误信息库的行为适用于GNU的移植性命令行界面标准为程序制作文档制作发行包GNU编码标准GNU编码标准@author{Richar
阅读全文
摘要:在使用任何语言进行应用程序开发时,我们都应该提前规划好如何处理错误。Java和c++中普遍使用异常来进行错误处理,但是c语言,因为没有提供一个很优雅的异常机制,所以明确如何进行错误处理显得很重要。C语言中的错误处理有多种方式,总结如下:大家可以讨论这些处理方式的优劣,这样等以后在程序开发中,我们可以从整体上为程序设计更好的错误处理方法。 1.返回值方式:用函数的返回值标志函数是否执行成功。比如成功返回1,失败返回0。这种方式的好处是简单方便,而且不影响效率,保持了c语言的高效率。但是仍然有问题,一个问题是代码可读性的问题,如果每个函数都有这样的返回值的话,为了保持程序的正确运行,我们必须对每个
阅读全文
摘要:assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行,原型定义:#include <assert.h>void assert( int expression );assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行。请看下面的程序清单badptr.c:#include <stdio.h>#include <assert.h>#include <stdlib.h>int main( vo
阅读全文
摘要:非本人作也!因非常经典,所以收归旗下,与众人阅之!原作者不祥!更全面的文章见:http://www.yuanma.org/data/2006/1121/article_1841.htm堆和栈的区别一、预备知识—程序的内存分配一个由c/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)—由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap)—一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态区)(static)—,全局变量和静态变量的存储
阅读全文