UNIX 标准与实现中限制和选项
来源:互联网 发布:网络高清摄像头安装图 编辑:程序博客网 时间:2024/05/17 03:14
一.前言
我们在学习《UNIX环境高级编程》这本书,刚开始就会感到晦涩的就是第二章的内容----UNIX标准与实现。
刚开始看确实比较难懂,往往我们会先放一放,后面的很多章节都提到了这方面的内容,等到时候在回顾,或许就会感到霍然开朗!
这本书,我也刚刚看完,感觉还是有很多地方没有掌握,所以在回顾一下,温故而知新嘛。
二.限制
1.哪些限制
为了更好的可移植性,UNIX提供了一些限制,它们定义在头文件<limit.h>中,其中两种限制是必须的:
(1). 编译时限制
(2).运行时限制
编译时限制一般是在头文件中定义的,我们可以通过这样的形式来查看它:
例如:我们要查看ARG_MAX这个限制名在我们的系统中有没有定义,可以这样
#ifdef ARG_MAX
my_arg_max=ARG_MAX;
#endif
而运行时限制则是要求进程调用特定函数以获得此种限制值,一般是使用函数sysconf,pathconf或fpathconf来得到相应的限制值
其中运行时限制的获得有分两种情况:
(1).不与文件或目录相关联的运行时限制:使用函数sysconf
(2).与文件或目录相关联的运行时限制:使用函数pathconf和fpathconf
2.三个和限制有关的函数
这三个函数分别是:
#include <unistd.h>
long sysconf(int name);
long pathconf(const char *pathname,int name);
long fpathconf(int fileds,int name);
返回值:所有函数若成功则返回相应值,若出错则返回-1
第一个函数的参数是一个限制名,后两个函数第一个参数分别是路径和一个文件描述符,第二个参数也是一个限制名
说明:sysconf的限制名name是以_SC开头的符号常量,后两个函数的限制名name是_PC开头的符号常量。
下面我们通过一个函数来具体地说明一下这几个函数的作用吧。
三.选项
如果我们需要编写一些可移植的应用程序,而这些应用程序与所有支持的选项相关,那么就需要一种可移植的方法以决定一种实现是否支持一个给定的选项。
Single UNIX Specification定义了三种处理选项的方法:
(1)编译时选项定义在<unistd.h>
(2)与文件或目录无关的选项用sysconf函数确定
(3)与文件或目录相关的选项拥pathconf或fpathconf函数来发现
1.如果平台定义了一些符号常量,我们可以通过它们的值来判断:
(1)如果符号常量的定义值为-1,那么该平台不支持相应的选项
(2)如果符号常量的定义值大于0,那么该平台支持相应的选项
(3)如果符号常量的定义值为0,则必须调用sysconf,pathconf,或fpathconf以确定相应的选项是否受到支持
2.如果平台没有定义这些符号常量,则必须使用前面说的那几个函数来决定该选项是否得到支持。
下面也通过一个函数来具体地说明一下如何得知系统对选项的支持情况。
- UNIX 标准与实现中限制和选项
- UNIX的标准与选项
- Unix 标准与实现
- UNIX/Linux 系统实现限制
- 读书笔记-APUE第三版-(2)UNIX标准和实现
- 2、UNIX标准及实现
- Unix、Posix和标准UniX规范
- pb10中实现时间限制和倒计时
- 图形的绘制,如何使用自定义画笔(颜色,线宽,线形)。如何为程序中添加选项菜单和选项设置对话框,如何使用标准颜色对话框,如何使用字体对话框,在选项对话框中实现预览功能。实现选项对话框和窗口类中的数据交换。如何改变对话框和控件的背景色,如何改变控件的文本颜色,
- POSIX对pthread的选项和限制
- 系统限制和选项limit(一)
- TLPI-Chapter 11系统限制和选项
- GUI的一些设置和标准菜单中一些选项的功能(不断更新中...)
- Unix:关于gcc -l和-L选项
- 第2章 unix标准及实现
- 第二章 UNIX标准及其实现
- APUE第二章 Unix标准及实现
- 第2章 UNIX标准及实现
- WINCE快捷方式详解
- 文件测试
- Windchill中实现like模糊查询字段中包含“_”和“%”的高级查询
- 读取Cookies
- 关于数据的导入问题
- UNIX 标准与实现中限制和选项
- 文字对应的code page
- mysql中text,longtext,mediumtext字段类型及区别
- 创建线程的方法二:实现 Runnable 接口
- C#.NET连接mysql方法
- 封装变化
- 计算机术语
- 通过blazeds让FLEX与java通信
- 如何获取某个动态链接库的版本信息,exe 版本信息