03 2013 档案

摘要:可执行程序包括BSS段、数据段、代码段(也称文本段)。BSS(Block Started by Symbol)通常是指用来存放程序中未初始化的全局变量和静态变量的一块内存区域。特点是:可读写的,在程序执行之前BSS段会自动清0。所以,未初始的全局变量在程序执行之前已经成0了。注意和数据段的区别,BSS存放的是未初始化的全局变量和静态变量,数据段存放的是初始化后的全局变量和静态变量。UNIX下可使用size命令查看可执行文件的段大小信息。如size a.out。 阅读全文
posted @ 2013-03-31 11:47 ITtecman 阅读(179) 评论(0) 推荐(0) 编辑
摘要:http://baike.baidu.com/view/608706.htm就象大家更熟悉的const一样,volatile是一个类型修饰符(type specifier)。它是被设计用来修饰被不同线程访问和修改的变量。volatile的作用: 作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值.精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。 阅读全文
posted @ 2013-03-30 16:41 ITtecman 阅读(141) 评论(0) 推荐(0) 编辑
摘要:一般在RAM中运行的程序时这样分段的(从低地址向高地址):程序段(默认名称一般为.text段),恒常量段(.RO段),带初始化值的全局变量段(一般名称为.RW段),不带初始化值的全局变量段(一般名称为.ZI段),然后上面还可能有堆空间,然后在上面是堆栈段(堆栈段的指针初始化在堆栈段的高地址,堆栈指针向下增长)。(当然这只是默认的情况,如果人为指定了链接规则,分布结果就可能不是上面这样了)详情见:http://bbs.csdn.net/topics/390249813 阅读全文
posted @ 2013-03-30 16:06 ITtecman 阅读(534) 评论(0) 推荐(0) 编辑
摘要:如果开发板ping不通Linux,就不能用nfs文件系统,这是一件非常杯具的事,所以找了几个可能出现的原因,有备无患!现象:能ping通XP或者win7非虚拟机,但ping不通虚拟机可能原因:1、虚拟机配置有问题,应该将网络连接改成“bridge”连接方式2、Linux虚拟机开了防火墙,可以在setup里关掉3、xp里开了防火墙,关了4、ip地址段不对应,如果是虚拟机的是192.168.0.12,那么开发板也应该相应为192.168.0.X,如果还想同时跟xp连接,还应该要将xp的IP地址对应到相对的ip地址段,可以使用‍tftpd32(非常好用小软件)修改,在setting里修改DHCP s 阅读全文
posted @ 2013-03-17 13:58 ITtecman 阅读(914) 评论(0) 推荐(1) 编辑
摘要:http://www.cnitblog.com/zouzheng/archive/2007/08/31/32691.aspx先看下简单的初始代码:注意其编译运行后的结果。root@xuanfei-desktop:~/cpropram/2# cat global.h //头文件#ifndef CLOBAL_H #define GLOBAL_H #include <stdio.h> int funca(void); int funcb(void);#endifroot@xuanfei-desktop:~/cpropram/2# cat funca.c //函数a#include &qu 阅读全文
posted @ 2013-03-12 10:42 ITtecman 阅读(296) 评论(0) 推荐(0) 编辑
摘要:linux下错误的捕获:errno和strerror的使用http://www.douban.com/note/165931644/经常在调用linux 系统api 的时候会出现一些错误,比方说使用open() write() creat()之类的函数有些时候会返回-1,也就是调用失败,这个时候往往需要知道失败的原因。这个时候使用errno这个全局变量就相当有用了。在程序代码中包含 #include <errno.h>,然后每次程序调用失败的时候,系统会自动用用错误代码填充errno这个全局变量,这样你只需要读errno这个全局变量就可以获得失败原因了。例如:#include &l 阅读全文
posted @ 2013-03-11 12:56 ITtecman 阅读(768) 评论(0) 推荐(0) 编辑
摘要:#include "netdb.h"包含一个头文件。头文件名是 netdb.hMS VC++ 编译器 无此头文件unix 有。net -- 网络 (network),db -- 数据库(database)netdb.h 定义了与网络有关的结构,变量类型,宏,函数。例如:struct hostent*gethostbyaddr(const void *addr, size_t len, int type);struct hostent*gethostbyname(const char *name); 阅读全文
posted @ 2013-03-11 08:32 ITtecman 阅读(1448) 评论(0) 推荐(0) 编辑
摘要:#include <dirent.h>是POSIX.1标准定义的unix类目录操作的头文件,包含了许多UNIX系统服务的函数原型,例如opendir函数、readdir函数.opendir函数:DIR *opendir(const char *pathname);返回值:若成功则返回指针,若出错则返回NULL。struct dirent *readdir(DIR *dp); 返回值:若成功则返回指针,若在目录结尾或出错则返回NULL。 阅读全文
posted @ 2013-03-11 08:27 ITtecman 阅读(305) 评论(0) 推荐(0) 编辑
摘要:popen()函数原型如下: FILE *popen(const char *cmd,const char *type); 返回值:若成功返回文件指针,出错则返回NULL功能:创建一个管道,fork一个子进程,接着关闭管道的不使用端,子进程执行cmd指向的应用程序或者命令。执行完该函数后父进程和子进程之间生成一条管道,函数返回值为FILE结构指针,该指针作为管道的一端,为父进程所拥有。子进程则拥有管道的另一端,该端口为子进程的stdin或者stdout。如果type=r,那么该管道的方向为:子进程的stdout到父进程的FILE指针;如果type=w,那么管道的方向为:父进程的FILE指针到子 阅读全文
posted @ 2013-03-10 17:44 ITtecman 阅读(370) 评论(0) 推荐(0) 编辑
摘要:自百度百科ctype.h里的函数概况1 字符测试函数1> 函数原型均为int isxxxx(int)2> 参数为int, 任何实参均被提升成整型3> 只能正确处理处于[0, 127]之间的值2 字符映射函数1> 函数原型为int toxxxx(int)2> 对参数进行检测, 若符合范围则转换, 否则不变int tolower(int); 'A'~'Z' ==> 'a'~'z'int toupper(int); 'a'~'z' ==> 'A'~ 阅读全文
posted @ 2013-03-10 16:12 ITtecman 阅读(282) 评论(0) 推荐(0) 编辑
摘要:http://zh.wikipedia.org/wiki/C_%E6%A8%99%E6%BA%96%E5%87%BD%E5%BC%8F%E5%BA%AB 阅读全文
posted @ 2013-03-10 15:51 ITtecman 阅读(177) 评论(0) 推荐(0) 编辑
摘要:stdint.h(自百度百科)一,是什么stdint.h是c99中引进的一个标准C库的头文件.二、干什么stdint.h中定义了一些整数类型,规则如下(其中N可以为8,16,32,64)intN_t, int_leastN_t, int_fastN_t表示长度为N位的整型数;uintN_t, uint_leastN_t, uint_fastN_t表示长度为N位的无符号整型数 ;stdint.h中的常量,定义以上各类型数的最大最小值(其中N可以为8,16,32,64)INTN_MIN, UINTN_MIN, INTN_MAX, UINTN_MAX ;INT_LEASEN_MIN, INT_LEA 阅读全文
posted @ 2013-03-10 15:46 ITtecman 阅读(906) 评论(0) 推荐(0) 编辑
摘要:Makefile规则: 目标:依赖文件列表 <Tab>命令列表 Makefile中的假想目标:all、clean等。此处关于all要注意,当有多个相互独立的目标要同时产生时,需要将这些目标放在all:之后并作为Makefile文件的第一条语句。例如:我们有test.c 和test0.c ,现在我们要编写Makefile文件,使得执行make后产生可执行文件test和test0,如果我们只是简单的写作如下方式: test: test.c gcc -o test test.c 语句a test0: test0.c gcc... 阅读全文
posted @ 2013-03-10 15:35 ITtecman 阅读(212) 评论(0) 推荐(0) 编辑
摘要:http://www.cnblogs.com/CBDoctor/archive/2012/08/12/2634350.html基本概念:阻塞IO::socket 的阻塞模式意味着必须要做完IO 操作(包括错误)才会返回。非阻塞IO::非阻塞模式下无论操作是否完成都会立刻返回,需要通过其他方式来判断具体操作是否成功。IO模式设置:一般对于一个socket 是阻塞模式还是非阻塞模式有两种方式::方法1、fcntl 设置;方法2、recv,send 系列的参数。(读取,发送时,临时将sockfd或filefd设置为非阻塞)方法一、fcntl 函数可以将一个socket 句柄设置成非阻塞模式:flag 阅读全文
posted @ 2013-03-10 14:13 ITtecman 阅读(8397) 评论(0) 推荐(0) 编辑
摘要:http://xyp1222.blog.163.com/blog/static/123817465201132395410317/在unix系统调用中,标准输入描述字用stdin,标准输出用stdout,标准出错用stderr表示,但在一些调用函数,引用了STDIN_FILENO表示标准输入才,同样,标准出入用STDOUT_FILENO,标准出错用STDERR_FILENO.请问,他们有什么区别吗?1、 stdin等是FILE *类型,属于标准I/O,在<stdio.h>。 STDIN_FILENO等是文件描述符,是非负整数,一般定义为0, 1, 2,属于没有buffer的I/O, 阅读全文
posted @ 2013-03-10 13:50 ITtecman 阅读(2200) 评论(0) 推荐(1) 编辑
摘要:导读:在linux中,/proc/sys/net/core/somaxconn这个参数,linux中内核的一个不错的参数somaxconn 看下其解析: 对于一个TCP连接,Server与Client需要通过三次握手来建立网络连接.当三次握手成功后, 我们可以看到端口的状态由LISTEN转变为ESTABLISHED,接着这条链路上就可以开始传送数据了. 每一个处于监听(Listen)状态的端口,都有自己的监听队列.监听队列的长度,与如下两方面有关: - somaxconn参数. - 使用该端口的程序中listen()函数. 1. 关于somaxconn参数: 定义了系统中每一个... 阅读全文
posted @ 2013-03-10 13:37 ITtecman 阅读(1302) 评论(0) 推荐(0) 编辑
摘要:http://hi.baidu.com/wlwqs/item/47c411334e53a5ffdf222150intfstat(intfiledes,structstat*buf);intstat(constchar*path,structstat*buf);intlstat(constchar*path,structstat*buf);一眼就能看出来fstat的第一个参数是和另外两个不一样的,fstat区别于另外两个系统调用的地方在于,fstat系统调用接受的是一个“文件描述符”,而另外两个则直接接受“文件全路径”。文件描述符是需要我们用open系统调用后才能得到的,而文件全路经直接写就可以 阅读全文
posted @ 2013-03-10 13:19 ITtecman 阅读(1498) 评论(0) 推荐(0) 编辑
摘要:S_ISREG等几个常见的宏 转自:http://blog.csdn.net/abc78400123/article/details/7628174来自百度文库:http://wenku.baidu.com/view/31777dc1d5bbfd0a795673b1.htmlstat函数讲解:表头文件: #include <sys/stat.h>#include <unistd.h>定义函数: int stat(const char *file_name, struct stat *buf);函数说明: 通过文件名filename获取文件信息,并保存在buf所指的结构体 阅读全文
posted @ 2013-03-10 13:11 ITtecman 阅读(3345) 评论(0) 推荐(0) 编辑
摘要:uint8_t,uint16_t,uint32_t数据类型http://peipengshuai.blog.163.com/blog/static/19012266201212313542392/在nesc的代码中,你会看到很多你不认识的数据类型,比如uint8_t等。咋一看,好像是个新的数据类型,不过C语言(nesc是C的扩展)里面好像没有这种数据类型啊!怎么又是u又是_t的?很多人有这样的疑问。论坛上就有人问:以*_t结尾的类型是不是都是long型的?在baidu上查一下,才找到答案,这时才发觉原来自己对C掌握的太少。那么_t的意思到底表示什么?具体的官方答案没有找到,不过我觉得有个答案比 阅读全文
posted @ 2013-03-10 12:52 ITtecman 阅读(718) 评论(0) 推荐(0) 编辑
摘要:[转]#ifndef#define#endif的用法(整理) 原作者:icwk 文件中的#ifndef头件的中的#ifndef,这是一个很关键的东西。比如你有两个C文件,这两个C文件都include了同一个头文件。而编译时,这两个C文件要一同编译成一个可运行文件,于是问题来了,大量的声明冲突。还是把头文件的内容都放在#ifndef和#endif中吧。不管你的头文件会不会被多个文件引用,你都要加上这个。一般格式是这样的:#ifndef <标识> #define <标识> ...... ...... #endif <标识>在理论上来说可以是自由命名的,但每个头文 阅读全文
posted @ 2013-03-10 12:43 ITtecman 阅读(452) 评论(0) 推荐(0) 编辑
摘要:所谓 MATLAB 程序,大致分为两类:M 脚本文件 (M-Script) 和 M 函数 (M-function), 它们均是普通的 ASCII 码构成的文件。M 脚本文件中包含一族由 MATLAB 语言所支持的语句,它类似于 DOS 下的批处理文件,它的执行方式很简单,用户只需在 MATLAB 的提示符 >> 下键入该 M 文件的文件名,这样 MATLAB 就会自动执行该 M 文件中的各条语句,并将结果直接返回到 MATLAB 的工作空间。 M 函数格式是 MATLAB 程序设计的主流,一般情况下, 不建议您使用 M 脚本文件格式编程。 MATLAB 的 M 函数是由 funct 阅读全文
posted @ 2013-03-08 20:26 ITtecman 阅读(2601) 评论(0) 推荐(0) 编辑
摘要:clc 阅读全文
posted @ 2013-03-08 20:20 ITtecman 阅读(1063) 评论(0) 推荐(0) 编辑
摘要:摘自:http://blog.chinaunix.net/uid-26552184-id-3377721.html Linux信号量(semaphore)是一种互斥机制。即对某个互斥资源的访问会收到信号量的保护,在访问之前需要获得信号量。在操作完共享资源后,需释放信号量,以便另外的进程来获得资源。获得和释放应该成对出现。 获得信号量集,需要注意的是,获得的是一个集合,而不是一个单一的信号量。 #include <sys/types.h> #include <sys/ipc.h> #include <sys/sem.h>1: int semget(key_t 阅读全文
posted @ 2013-03-05 11:05 ITtecman 阅读(570) 评论(0) 推荐(0) 编辑
摘要:linux 共享内存共享内存共享内存是进程间通信中最简单的方式之一。共享内存允许两个或更多进程访问同一块内存,就如同 malloc() 函数向不同进程返回了指向同一个物理内存区域的指针。当一个进程改变了这块地址中的内容的时候,其它进程都会察觉到这个更改。快速本地通信 因为所有进程共享同一块内存,共享内存在各种进程间通信方式中具有最高的效率。访问共享内存区域和访问进程独有的内存区域一样快,并不需要通过系统调用或者其它需要切入内核的过程来完成。同时它也避免了对数据的各种不必要的复制。 因为系统内核没有对访问共享内存进行同步,您必须提供自己的同步措施。例如,在数据被写入之前不允许进程从共享内存中.. 阅读全文
posted @ 2013-03-04 13:39 ITtecman 阅读(414) 评论(0) 推荐(0) 编辑
摘要:对信号集操作函数的使用方法和顺序如下:① 使用signal或sigaction函数安装和登记信号的处理。② 使用sigemptyset等定义信号集函数完成对信号集的定义。③ 使用sigprocmask函数设置信号屏蔽位。④ 使用sigpending函数检测未决信号,非必需步骤。 阅读全文
posted @ 2013-03-03 21:13 ITtecman 阅读(206) 评论(0) 推荐(0) 编辑
摘要:信号集是一个位向量,其中每一位对应着linux系统的一个信号。可使用如下函数对信号集进行处理:#include <signal.h>int sigemptyset(sigset_t * set);int sigfillset(sigset_t * set);int sigaddset(sigset_t * set);int sigdelset(sigset_t * set);sigemptyset将一个信号集清空;sigfillset将信号集的所有位置位;sigaddset函数将参数signo指定的信号所对应的位设置为1;sigdelset将signo的对应位设置为0。 阅读全文
posted @ 2013-03-03 20:48 ITtecman 阅读(152) 评论(0) 推荐(0) 编辑
摘要:atoiC语言库函数名: atoi功 能: 把字符串转换成整型数。名字来源:ASCII to integer 的缩写。原型: int atoi(const char *nptr);函数说明: 参数nptr字符串,如果第一个非空格字符存在或者不是数字也不是正负号则返回零,否则开始做类型转换,之后检测到非数字(包括结束符 \0) 字符时停止转换,返回整型数。头文件: #include <stdlib.h>程序例:1)#include <stdlib.h>#include <stdio.h>int main(void){int n;char *str = &quo 阅读全文
posted @ 2013-03-03 20:40 ITtecman 阅读(255) 评论(0) 推荐(0) 编辑
摘要:#include <signal.h>#include <sys/types.h>int kill(pid_t pid, /*指明要发送的信号进程号*/ int signo);/*信号*/int raise(int signo);/*信号*/成功则返回0, 出错则返回-1 阅读全文
posted @ 2013-03-03 16:10 ITtecman 阅读(222) 评论(0) 推荐(0) 编辑
摘要:头文件#include<signal.h> 功 能:设置某一信号的对应动作 函数原型: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)一个返回值为正数的函数地址 此函数... 阅读全文
posted @ 2013-03-03 15:26 ITtecman 阅读(390) 评论(2) 推荐(0) 编辑
摘要:fcntl.h:fcntl: file control 文件控制 阅读全文
posted @ 2013-03-03 10:36 ITtecman 阅读(310) 评论(0) 推荐(0) 编辑
摘要:mkfifo函数使用[code]mkfifo(建立实名管道)相关函数pipe,popen,open,umask表头文件#include<sys/types.h>#include<sys/stat.h>定义函数int mkfifo(const char * pathname,mode_t mode);函数说明mkfifo ()会依参数pathname建立特殊的FIFO文件,该文件必须不存在,而参数mode为该文件的权限(mode%~umask),因此 umask值也会影响到FIFO文件的权限。Mkfifo()建立的FIFO文件其他进程都可以用读写一般文件的方式存取。当使用 阅读全文
posted @ 2013-03-03 09:49 ITtecman 阅读(483) 评论(0) 推荐(0) 编辑
摘要:在Linux环境下开发经常会碰到很多错误(设置errno),其中EAGAIN是其中比较常见的一个错误(比如用在非阻塞操作中)。 从字面上来看,是提示再试一次。这个错误经常出现在当应用程序进行一些非阻塞(non-blocking)操作(对文件或socket)的时候。例如,以 O_NONBLOCK的标志打开文件/socket/FIFO,如果你连续做read操作而没有数据可读。此时程序不会阻塞起来等待数据准备就绪返回,read函数会返回一个错误EAGAIN,提示你的应用程序现在没有数据可读请稍后再试。 又例如,当一个系统调用(比如fork)因为没有足够的资源(比如虚拟内存)而执行失败,返回EAGAI 阅读全文
posted @ 2013-03-02 16:44 ITtecman 阅读(330) 评论(0) 推荐(0) 编辑
摘要:出错处理守护进程完全脱离了终端,因此不能只是写到标准出错上.通常使用的方法是使用syslog服务,将出错信息输入到”/var/log/message”系统日志文件中去.Syslog是Linux中的系统日志管理服务,通过守护进程syslogd来维护.处理过程<1>打开syslog<2>写入日志<3>关闭syslog头文件#include <syslog.h>函数原型:void openlog(char *ident, int option, int facility) ;参数:ident为自定义标识符,option如下LOG_CONS若日志消息,不 阅读全文
posted @ 2013-03-02 14:23 ITtecman 阅读(651) 评论(0) 推荐(0) 编辑
摘要:> 是定向输出到文件,如果文件不存在,就创建文件;如果文件存在,就将其清空;一般我们备份清理日志文件的时候,就是这种方法:先备份日志,再用`>`,将日志文件清空(文件大小变成0字节);>>这个是将输出内容追加到目标文件中。如果文件不存在,就创建文件;如果文件存在,则将新的内容追加到那个文件的末尾,该文件中的原有内容不受影响。 阅读全文
posted @ 2013-03-02 11:19 ITtecman 阅读(228) 评论(0) 推荐(0) 编辑
摘要:exit(0):正常运行程序并退出程序;exit(1):非正常运行导致退出程序;return():返回函数,若在主函数中,则会退出函数并返回一值。详细说: 1. return返回函数值,是关键字; exit 是一个函数。 2. return是语言级别的,它表示了调用堆栈的返回;而exit是系统调用级别的,它表示了一个进程的结束。 3. return是函数的退出(返回);exit是进程的退出。 4. return是C语言提供的,exit是操作系统提供的(或者函数库中给出的)。 5. return用于结束一个函数的执行,将函数的执行信息传出个其他调用函数使用;exit函数是退出应用程序,删除进程使 阅读全文
posted @ 2013-03-01 13:09 ITtecman 阅读(40563) 评论(2) 推荐(3) 编辑

点击右上角即可分享
微信分享提示