dedecms织梦内容管理系统    
首页 | java | C/C++ | PHP | 操作系统 | ajax | 脚本编程 | 安全技术 | 本站下载页 | flex | CRM | 专题 | QQ群 | 测试中心 | 会员中心 | 积分规则
  当前位置:主页>操作系统>linux>文章内容
C常用的LinuxC语言函数库
来源:未知     作者:    
本附录列出 Linux 的常见发行版(如 RedHat Linux)中包含的函数库。除特别指出外,这些库的使用和发行适用 GPL 条款或 LGPL 条款。

需要注意的是,Linux 上的函数库正在以非常快的速度增加和更新,这里列出的函数库只是其中的一小部分。如果读者要在 Linux 上进行开发,最好先了解一些是否有一些可供直接利用的函数库,以避免重复开发。有关 Linux 上的应用和库开发,可访问如下站点:

http://www.linux.org
http://www.linuxstart.com
http://www.linuxnow.com
http://www.linuxresource.com
http://www.ee.mu.oz.au/linux/programming/(The Linux Programmer’s BouncePoint)

C.1 CrackLib

CrackLib 为用户提供了一个 C 语言,利用这一函数,可避免用户选择容易破解的密码。该库可在类似 passwd 的程序中使用。

C.2 GLib

GLib 作为 GTK+ 的一个组件,提供了操作通用,如链表、树、哈希表、内存分配等等在内的 C 库。

C.3 glibc

众所周知,C 语言并没有为常见的操作,例如输入/输出、内存管理,字符串操作等提供内置的支持。相反,这些功能一般由标准的“库”来提供。

GNU 的 C 函数库,即 glibc,定义了 ISO C 标准指定的所有的库,以及由 POSIX 或其他 UNIX 变种指定的附加特色,还包括有与 GNU 系统相关的扩展。

glibc 基于如下标准:


ISO C:C 编程语言的国际标准。GNU C 库与美国国家标准局(ANSI)公布的 C 标准兼容。这一标准后来被国际标准化组织所接收(ISO/IEC 9899:1990)。


POSIX:的 ISO/IEC 9945(即 IEEE 1003)标准。GNU C 函数库实现了 ISO/IEC 9945-1:1996 (POSIX 系统应用程序编程接口,即 POSIX.1)指定的所有。该标准是对 ISO C 的扩展,包括文件系统原语、设备相关的终端控制函数以及进程控制函数。同时,GUN C 函数库还支持部分由 ISO/IEC 9945-2:1993(POSIX Shell 和 工具标准,即 POSIX.2)指定的函数,其中包括用于处理正则表达式和模式匹配的。


Berkeley Unix:BSD 和 SunOS。GNU C 函数库定义了某些 UNIX 版本中尚未标准化的函数,尤其是 4.2 BSD, 4.3 BSD, 4.4 BSD Unix 系统(即“Berkeley Unix”)以及“SunOS”(大众化的 4.2 BSD 变种,其中包含有某些Unix System V 的功能)。BSD 函数包括符号链接、select 函数、BSD 信号处理以及套接字等等。


SVID:System V 的接口描述。System V 描述(SVID)是描述 AT&T Unix System V 的文档,它是对 POSIX 标准的扩展超集。GNU C 函数库定义了大多数由 SVID 指定而未被 ISO C 和 POSIX 标准指定的函数。来自 System V 的支持函数包括进程间通信和共享内存、hsearch 和 drand48 函数族、fmtmsg 以及一些数学。


XPG:X/Open 可移植性指南。X/Open 可移植性指南(由 X/Open Company, Ltd.出版),是比 POSIX 更为一般的标准。X/Open 拥有 Unix 的版权,而 XPG 则指定成为 Unix 必须满足的需求。GNU C 库遵循 X/Open 可移植性指南(Issue 4.2)以及所有的 XSI(X/Open 系统)兼容系统的扩展,同时也遵循所有的 X/Open Unix 扩展。

C.4 Imlib

Imlib 是一个一般性的图象装载和渲染库。利用 Imlib,可简化在 X-Window 系统中装载图象并获得可绘制对象的工作。它提供了图象渲染的快速操作,同时也为常见的图象操作提供简单的操作例程。

Imlib 的特色有:


在完整编译的情况下,Imlib 可在无其他应用程序的帮助下,装载 PPM、PGM、TIFF、PNG、XPM、JPEG 和 EIM 格式的图象,并保留它们的透明特征。对于一些 Imlib 并不支持的图象格式,它可依赖一组系统工具将这些图象格式转换为 Imlib 可理解的格式,然后进行处理,这样,Imlib 能够处理其他工具所能支持的任意格式。当前,Imlib 支持 Imagemagick 和 PBMPLUS 工具。利用外来工具时,装载过程要慢一些。


Imlib 拥有图象缓存功能。程序员可以编写一些直接性的代码,而不需要过多考虑性能问题。图象被装入之后,会缓存起来。如果图象仍然在缓存中,就没有必要重新装入了,而只需从缓存中引用该图象。于是,质朴的直接性代码能够保持较快的执行速度。


Imlib 可以对图象进行任意倍数的缩放(限制在 32767 x 32767 象素)。这意味着仅通过一个调用,就可以将小的图标放大,或者将大的图象缩减为指甲大小的图象。


Imlib 可通过灰度、亮度、对比度或任意的曲线映射关系提高图象的可视度,或修饰其外观。它允许进行灰度校正、白点校正或其他高级特色,而不需要其他硬件支持。


Imlib 可完成基本的图象修饰(翻转、旋转等)。


Imlib 经过严格的优化,因此可以最高的速度获得最好的结果。根据 X Server 和硬件的能力,可选择不同的选项提高其渲染处理的速度。


Imlbi 可处理许多显示深度。能够在单色、2、3、4、5、6、7、8 位的伪色彩以及静态颜色的系统上工作。它也可以在 15 位、16 位(555 和 565)、以及 24 位的色彩系统上工作。


在对图象以不同的大小进行渲染时,Imlib 具有高级的 pixmap 缓存,可以重复使用,进而提供渲染速度。


Imlib 分别具有 Xlib 和 GDK 的版本,也可以同时安装。这两个版本共享同一个配置文件。

C.5 libgHTTP

HTTP 是针对 WWW 底层传输机制的协议。该协议具有良好的文档并被广泛实现。而该协议的使用通常和 Web 联系在一起,但该协议的使用却可以扩展到任何一个适合的地方。libgHTTP 就是一个完全和 HTTP 1.1 (RFC 2068 的第五次修改草案中定义)兼容的库。libgHTTP 的设计非常简单而且易于使用。

C.6 LibGTop

LibGTop 是一个能够获取进程信息以及系统运行信息的库,这些信息包括:


系统的一般信息


cpu - CPU 的使用信息


mem - 内存使用信息


swap - 交换使用信息(包括分页活动)


loadavg - 负载的平均水平(包括可运行进程数目、进程总数目和上一次运行的进程标识号等)


uptime - 启动后的时间以及空闲时间,可从 CPU 的使用信息中计算得到。


SYS V IPC 限制


shm_limits - 共享内存的限制信息


msg_limits - 消息队列的限制信息


sem_limits - 信号量的限制信息


进程列表


proclist - 进程列表


进程信息


proc_state - cmd, state, uid, gid


proc_uid - uid, euid, gid, egid, pid, ppid, pgrp , tty, tpgid, priority, nice


proc_mem - size, vsize, resident, share, rss, rss_rlim


proc_time - start_time, rtime, utime, stime, cutime, cstime, timeout, it_real_value, frequency


proc_signal - signal, blocked, sigignore, sigcatch


proc_kernel - k_flags, min_flt, maj_flt, cmin_flt, cmaj_flt, kstk_esp, kstk_eip, nwchan, wchan


proc_segment - text_rss, shlib_rss, data_rss, stack_rss, dirty_size start_code, end_code, start_stack


进程映射


proc_map - 进程映射(Linux 下的/proc/<pid>/映射


文件系统使用信息:


mountlist - 当前挂装文件系统列表


fsusage - 文件系统使用信息

C.7 libpng

PNG 指可移植的网络图象文件格式(Portable Network Graphic)。libpng 则是 PNG 规范对应的 C 库,其目的是减少在应用程序中为支持 PNG 文件格式而需要花费的时间和精力。PNG 规范(RFC 2083)以及相关文档、最新的 libpng 库可从如下站点获得:

ftp://ftp.uu.net/graphics/png/documents/
/Article/UploadFDL05/200511/20051103153926982.png.html
ftp://ftp.uu.net/graphics/png/documents/
http://www.cdrom.com/pub/png/

libpng 的最终目的是,在任何需要使用 PNG 文件格式的地方均能够获得 libpng 的支持。libpng 有如下特色:


可同时处理多个会话。


易于修改。


可移植到许多不同的平台上,包括ANSI、K&R、16-位、32-位以及 64-位等。


易于使用。


是线程安全的,可用于多线程的应用程序。

需要注意的是,libpng 使用 zlib 完成 PNG 文件的压缩和解压,因此,系统中需要安装有 zlib 库(下面讲述)。

C.8 libtiff

libtiff 提供了对 TIFF(Tag Image File Format)的支持。TIFF 是广泛用于保存图象数据的格式。libtiff 包含如下功能:


读写 TIFF 的。


提供了在 UNIX 系统上对 TIFF 图象进行简单操作的工具。

C.9 GNU Libtool

GNU Libtool 实际是一个脚本生成工具,它可以为软件包开发者提供一般性的共享库支持。

以前,如果源代码包的开发者要利用共享库的优点,则必须为每个软件包可支持的平台编写定制的支持代码。并且还需要设计配置接口,以便软件包的安装程序能够正确选择要建立的库类型。利用 GNU Libtool,则可以简化开发者的这一工作。它在一个单独的脚本中同时封装了与平台相关的依赖性以及用户界面。GNU Libtool 可使每个宿主类型的完整功能可通过一般性的获得,同时为程序员隐藏了宿主的特殊性。

GNU Libtool 一致性是可靠的,用户不必阅读那些晦涩的文档,以便在每个平台上建立共享库。他们只需运行软件包的配置脚本,而由 libtool 完成繁复的工作。

C.10 libungif

GIF 是指 Graphics Interchange Format 规范。libungif 包含了一组用来处理 GIF 图象的可移植工具和库例程。最新版本可从如下站点获得;

http://www.ccil.org/~esr/giflib

libungif包含了用来剪切、旋转、缩放和定位 GIF 图象的程序。包括一个 X11 查看器、将 GIF 输出到 Epson 兼容打印机的的代码,以及许多转换工具。

函数库中包括了读取和写入 GIF 文件的库例程,在 GIF 文件中嵌入 8x8 字体的工具,以及错误处理例程等。

C.11 svgalib

svgalib 是一个底层图形库,可在 Linux 的虚拟终端上运行。svgalib 支持许多常见的 SVGA 卡,包括 Trident TVGA 9440、S3 Trio64 等。

SVGA 包括如下功能:


库的初始化;


查询硬件配置,包括鼠标、芯片组和监视器;


设置显示模式;


获取显示模式信息;


绘图原语,包括画点、扫描线等基本绘图功能;


基本的键盘 I/O,区别于原始(RAW)模式;


直接的 VGA 内存访问;


颜色调色板支持;


鼠标处理支持;


原始键盘处理,以原始访问读取键盘设备,从而可获得对键盘的完全控制;


游戏棒支持;


虚拟终端切换功能;


SVGA 卡的加速特性支持等。

C.12 zlib

zlib 是一个通用的数据压缩库。代码是线程安全的,可用于支持多线程应用程序。

zlib 库支持的数据格式包括RFC 1950 到 1952 中描述的文件格式:


zlib 格式,由ftp://ds.internic.net/rfc/rfc1950.txt 描述;


deflate 格式,由ftp://ds.internic.net/rfc/rfc1951.txt 描述;


gzip 格式:由ftp://ds.internic.net/rfc/rfc1952.txt 描述;

C.13 字符界面库

UNIX 系统对字符界面的支持是非常完善的。在 Linux 系统中,可在如下几个层次上进行字符界面编程:

1.利用 ANSI 的标准输入/输出,例如 printf,scanf 等。

2.利用 termcap 函数库。termcap 库实际利用定义在 TERMinal CAPabilitie (终端能力,/etc/termcap)中的信息获得对如下特殊操作的支持:


特殊字符的显示;


字符的插入、删除以及行的插入、删除等操作;


终端初始化。

但是 termcap 库只提供了对终端的底层访问,而颜色、参数化输出和优化等工作,需要应用程序自己完成。

3.使用 terminfo 数据库。TERMinal INFOrmation (终端信息,usr/lib/terminfo/[A-z][0-9])基于 termcap 数据库,也提供了对终端能力的描述,但较 termcap 高级。利用 terminfo ,程序可方便地改变屏幕,并使用诸如功能键在内的特殊按键。

4.curses 函数库。curses 库基于 terminfo 提供了更加高级的终端访问能力。利用 curses 可打开并操作屏幕上的窗口,而且 curses 还提供了完整的输入和输出集合,可修改 150 种之多的终端的视频。

5.ncurses 函数库。ncurses 是对 ncrses 函数库的提高和扩展。它和 SVr4 兼容,并提供了某些扩展,包括颜色操作、输出的特殊优化等等。在 Linux 系统中,ncurses 是使用最为广泛的字符界面库,许多基于字符界面的配置工具,如 netconf,均是基于 ncurses 的程序。

 

 

上一篇:使用 GDB 调试 Linux 软件   下一篇:Linux核心代码分析
[收藏] [推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
用户名: 新注册) 密码: 匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论
  热点文章
·Linux常用基本命令及应用技巧
·写得蛮好的linux学习笔记
·学会在Linux下对硬盘分区
·找回Redhat的超级用户密码
·Linux下C语言编程
·GDB教程
·Cron服务配置详解
·Linux与Unix二大操作系统编程的
·Linux 2.6 内核的嵌入式系统应用
·Linux和Windows系统调用的比较
·vim命令(一)
·vim 命令(二)
  相关文章
·使用 GDB 调试 Linux 软件
·Linux核心代码分析
·Linux 进程调度原理
·关于Linux下编写和编译程序的几
·Unix(Linux)C编程问题精粹
·Linux库函数升级权威经验
·linux内核模块和驱动程序的编写
·Linux下C语言编程--信号处理函数
·Linux内核模块编程之字符设备文
·Linux ioctl() Primer
·Linux网络代码导读v0.2
·Linux程式设计入门-fork,pthread
  相关信息
copy right @ 百家拳软件项目研究室 2007 辽ICP备07011763