文章分类 -  linux应用开发

QT、shell、Makefile、gcc、进程等
摘要:如果一个可执行程序执行时出现如下的错误:error while loading shared libraries: libxxx.so: can not open shared object file: No such file or directory表示找不到该动态库的路径,需要在执行该程序前配置。而配置有两种方法:方法一:具有root权限,可以直接编辑/etc/ld.so.conf文件,将类库路径加入;不过一般/etc/ld.so.conf文件的内容是“include ld.so.conf.d/*.conf”,那么可以在/etc/ld.so.conf.d目录下创建新的配置文件:文件名.c 阅读全文
posted @ 2012-07-15 22:43 茫茫深海一条鱼 阅读(174) 评论(0) 推荐(0)
摘要:在unix系统调用中,标准输入描述字用stdin,标准输出用stdout,标准出错用stderr表示,但在一些调用函数,引用了STDIN_FILENO表示标准输入才,同样,标准出入用STDOUT_FILENO,标准出错用STDERR_FILENO.他们的区别:stdin等是FILE *类型,属于标准I/O,在<stdio.h>。STDIN_FILENO等是文件描述符,是非负整数,一般定义为0, 1, 2,属于没有buffer的I/O,直接调用系统调用,在<unistd.h>。 阅读全文
posted @ 2012-07-04 23:15 茫茫深海一条鱼 阅读(544) 评论(0) 推荐(0)
摘要:慢系统调用(slow system call):此术语适用于那些可能永远阻塞的系统调用。永远阻塞的系统调用是指调用有可能永远无法返回,多数网络支持函数都属于这一类。如:若没有客户连接到服务器上,那么服务器的accept调用就没有返回的保证。 EINTR错误的产生:当阻塞于某个慢系统调用的一个进程捕获某个信号且相应信号处理函数返回时,该系统调用可能返回一个EINTR错误。例如:在socket服务器端,设置了信号捕获机制,有子进程,当在父进程阻塞于慢系统调用时由父进程捕获到了一个有效信号时,内核会致使accept返回一个EINTR错误(被中断的系统调用)。 当碰到EINTR错误的时候,可以采取有一 阅读全文
posted @ 2012-07-04 21:49 茫茫深海一条鱼 阅读(18076) 评论(0) 推荐(2)
摘要:1 env和export和set均可以打印出所有环境变量,但格式和顺序不一样;2 echo $变量名 查看某一个环境变量的值;3 export 变量名=变量值 或 declare -x 变量名=变量值, 设置一个变量;如果没有值,则变量值为"";4 export CLASSPATH=$CLASSPATH:/home/ycw 为存在的变量增加值5 unset 变量名 清除一个变量,该变量名不会再存在6HISTSIZE是指保存历史命令记录的条数。LOGNAME是指当前用户的登录名。HOSTNAME是指主机的名称,许多应用程序如果要用到主机名的话,通常是从这个环境变量中来取得的。 阅读全文
posted @ 2012-05-04 23:55 茫茫深海一条鱼 阅读(214) 评论(0) 推荐(0)
摘要:sysconf可以被用于查询当前unix系统或类unix系统的各种限制,然后程序可以根据这些限制而做出不同的策略,从而保证程序在各个系统上都能够正常运行。 阅读全文
posted @ 2011-11-20 15:40 茫茫深海一条鱼 阅读(258) 评论(0) 推荐(0)
摘要:pthread来自POSIX.1-2001,是一个可选特性。可以用特征测试宏_POSIX_THREADS在预编译时进行判断是否支持该特性,也可以把_SC_THREADS常熟用于调用sysconf函数,从而在运行时确定是否支持线程。 阅读全文
posted @ 2011-11-20 11:11 茫茫深海一条鱼 阅读(238) 评论(0) 推荐(0)
摘要:月份 英文简写 英文全称 一月 Jan. January 二月 Feb. February 三月 Mar. March 四月 Apr. April 五月 May. May 六月 June. June 七月 July. July 八月 Aug. Aguest 九月 Sept. September 十月 Oct. October 十一月 Nov. November 十二月 Dec. December 注意:正规的英语中六月,七月,九月的缩写是4个字母,其他月份3个字母。挂历上见到的Jun,Jul,Sep是错误的 阅读全文
posted @ 2011-09-21 15:03 茫茫深海一条鱼 阅读(917) 评论(0) 推荐(0)
摘要:1 #define MYDEBUG(format, args...) printf(format, args)2 #define MYDEBUG(format, ...) printf(format, __VA_ARGS__)这两种都要求除了格式字符串之外,至少还需要一个参数,否则编译出错。3 使用gcc的扩展特性#define MYDEBUG(format, args...) printf(format, ##args)则除了格式串外,如果不需要参数,可以不出现参数。 阅读全文
posted @ 2011-09-21 13:47 茫茫深海一条鱼 阅读(204) 评论(0) 推荐(0)
摘要:#include <stdio.h>#include <limits.h>int main(){ unsigned short i = USHRT_MAX; printf("max %d\n", i); printf("max %s\n", (i+1 > USHRT_MAX)?"yes":"no"); printf("max %d, %d\n", i+1, ++i); return 0;}运行之后结果如下:max 65535max yesmax 1, 0不解之处: 阅读全文
posted @ 2011-07-24 10:58 茫茫深海一条鱼 阅读(810) 评论(0) 推荐(0)
摘要:linux下动态库的名称一般是libxxx.so或者libxxx.so.版本。下面用一个实例来说明linux下动态库的开发。1 编写文件sample.hvoid sayhello(void);2 编写文件sample.c#include <stdio.h>#include <sample.h>void sayhello(void){ printf("say hello\n");}3 编译动态库libsample.sogcc -shared -o libsample.so sample.c -I.得到libsample.so文件4 部署动态库/usr/ 阅读全文
posted @ 2011-06-19 22:45 茫茫深海一条鱼 阅读(442) 评论(0) 推荐(0)
摘要:对于GCC编译器,我昨天查了一下手册,发现如下选项: -Dmacro=string,等价于在头文件中定义:#define macro string。例如:-DTRUE=true,等价于:#define TRUE true -Dmacro,等价于在头文件中定义:#define macro 1,实际上也达到了定义:#define macro的目的。例如:-DLINUX,等价于:#define LINUX 1(与#define LINUX作用类似)。 --define-macro macro=string与-Dmacro=string作用相同。 阅读全文
posted @ 2011-06-15 17:13 茫茫深海一条鱼 阅读(963) 评论(0) 推荐(0)
摘要:使用unix domain socket时,如果我连续给对方发送数据,而对方不接收,不管我发送的数据包的大小,当我连续发送到第十一次的时候就阻塞住了。我怀疑这是内核的一个限制。 阅读全文
posted @ 2011-06-14 10:54 茫茫深海一条鱼 阅读(312) 评论(0) 推荐(0)
摘要:1 使用命令:ipcs -m2 查看/proc/sys/kernel/shm下的文件 阅读全文
posted @ 2011-04-12 13:26 茫茫深海一条鱼 阅读(182) 评论(0) 推荐(0)
摘要:1 交叉编译器的使用,如需指定目标机器,指定头文件目录、C类库等;2 一个项目中加载的类库(静态库)和动态库,可能到了目标机上没有这些类库,那么就需要编译这些类库到目标机上。编译的过程中可能又需要各种依赖...这是让人头痛的事情。 阅读全文
posted @ 2011-03-31 18:44 茫茫深海一条鱼 阅读(147) 评论(0) 推荐(0)
摘要:占位 阅读全文
posted @ 2011-03-28 15:22 茫茫深海一条鱼 阅读(178) 评论(0) 推荐(0)
摘要:说明为什么需要单独的内存管理,如何有效进行管理......需要好好学习品味。 阅读全文
posted @ 2011-03-10 19:07 茫茫深海一条鱼 阅读(157) 评论(0) 推荐(0)
摘要:linux: 内存: cat /proc/meminfocpu: cat /proc/cpuinfo硬盘: df -h -T(no device的设备看不到)fdisk -l 可以在redhat9.0中看; redhat企业版不行.linux下还有几个命令可以看很多硬件设备的信息.lspci -vdmidecode dmesg查看软件信息查看linux版本:cat /proc/version查询软件包(仅限Red Hat Linux和Centos系列):yum list|more 列出所有包文件,可搭配grep查询软件包,如yum list |grep kernel 阅读全文
posted @ 2011-03-10 14:07 茫茫深海一条鱼 阅读(209) 评论(0) 推荐(0)
摘要:uptime文件中有两个数字,第一个是系统启动以来消逝的时间;第二个是系统空闲时间。两者的单位都是秒。 阅读全文
posted @ 2011-02-22 16:55 茫茫深海一条鱼 阅读(201) 评论(0) 推荐(0)
摘要:线程和线程的同步对象(互斥量,读写锁,条件变量)都具有属性。在修改属性前都需要对该结构进行初始化。使用后要把该结构回收。我们用pthread_ mutexattr_init函数对pthread_mutexattr结构进行初始化,用pthread_mutexattr_destroy函数对该结构进行回收。4名称::pthread_mutexattr_init/pthread_mutexattr_destroy功能:初始化/回收pthread_mutexattr_t结构头文件:#include pthread.h函数原形:int pthread_mutexattrattr_init(pthrea 阅读全文
posted @ 2011-01-24 17:06 茫茫深海一条鱼 阅读(1775) 评论(0) 推荐(0)
摘要:完美哈希函数(Perfect Hash Function)收藏 什么是完美哈希函数完美哈希函数(Perfect Hash Function,简称PHF)就是没有冲突的哈希函数,也就是,函数 H 将 N 个 KEY 值映射到 M 个整数上,这里 M=N ,而且,对于任意的 KEY1 ,KEY2 ,H( KEY1 ) != H( KEY2 ) ,并且,如果 M = = N ,则 H 是最小完美哈希函数(Minimal Perfect Hash Function,简称MPHF)。什么时候使用PHF和MPHF通常情况下,PHF或MPHF是针对静态集合的。也就是,在使用PHF或MPHF时,所有的 KE 阅读全文
posted @ 2010-12-19 01:31 茫茫深海一条鱼 阅读(556) 评论(0) 推荐(0)