apue第二章
来源:互联网 发布:薛之谦淘宝店叫什么 编辑:程序博客网 时间:2024/05/17 03:17
我的目标是:“让我的家人生活得跟好”
1、Posix标准,posix = potable operating System interface for computer environment
由IEEE制订。
2、系统的限制
不同的平台系统都有限制,比如字长的区别,32位与64位。有点限制可以在头文件中定义,有点限制则和具体的实现有关系。比如最大文件长度,能打开的最大进程数目等。
ANSI c的限制在limits.h 中,同样posix也有一些限制在相应的头文件中。
例如:
white@white-desktop:/usr/include$ cat limits.h
/* Minimum and maximum values a `signed short int' can hold. */
# define SHRT_MIN (-32768)
# define SHRT_MAX 32767
/* Maximum value an `unsigned short int' can hold. (Minimum is 0.) */
# define USHRT_MAX 65535
/* Minimum and maximum values a `signed int' can hold. */
# define INT_MIN (-INT_MAX - 1)
# define INT_MAX 2147483647
一些限制值在编译时是可用的一些在运行时才能知道。
我们可以使用sysconf ,pathconf, fpathconf取得。
Sysconf 不与文件和目录相关的运行时限制
pathconf, fpathconf与文件和目录相关的运行时限制
例如下面的程序可以打印运行时的时间限制
/* 运行时间限制 */
#include<errno.h>
#include<unistd.h>
#include<stdio.h>
void pr_sysconf(char *msg, int name)
{
long val;
fputs(msg,stdout);
errno = 0;
if((val = sysconf(name)) < 0)
{
if(errno != 0) { printf("error in pr_sysconf/n");return ;}
fputs("not defined/n",stdout);
return ;
}
printf("%ld/n",val);
}
void pr_pathconf(char *msg,char *path, int name)
{
long val;
fputs(msg,stdout);
errno = 0;
if((val = pathconf(path,name)) < 0)
{
if(errno != 0) { printf("error in pr_sysconf/n");return ;}
fputs("not defined/n",stdout);
return ;
}
printf("%ld/n",val);
}
int main(int argc, char *argv[])
{
pr_sysconf("CHILD_MAX = ",_SC_CHILD_MAX); //每个进程最大的子进程数
pr_sysconf("PASS_MAX = ",_SC_PASS_MAX); //口令最大有效字节数
pr_sysconf("CLK_TCK = ",_SC_CLK_TCK); //每一秒的滴答数
pr_sysconf("ARG_MAX = ",_SC_ARG_MAX); //exec的最大参数长度
pr_sysconf("OPEN_MAX = ",_SC_OPEN_MAX); //每一个进程最大打开的文件数
pr_sysconf("STREAM_MAX = ",_SC_STREAM_MAX); //每一时刻 一个进程打开的最大标准io流数目,如果没有定义一定于FOPEN_MAX 相同
pr_sysconf("SAVE_IDS = ",_SC_SAVED_IDS); //是否支持保存的设置用户id,和设置组id
pr_sysconf("posix version = ",_SC_VERSION); //poxis 的版本
pr_pathconf("MAX_CANON = ", "/dev/tty",_PC_MAX_CANON);//在一终端输入的最大字节数
pr_pathconf("MAX_INPUT = ", "/dev/tty",_PC_MAX_INPUT);//终端输入可用空间的最大字节数
pr_pathconf("MAX_NAME = ", argv[1],_PC_NAME_MAX);//文件名的最大长度
pr_pathconf("MAX_path = ", argv[1],_PC_PATH_MAX);//相对路径的最大字节数
pr_pathconf("MAX_PIPE_BUF = ", argv[1],_PC_PIPE_BUF);//原子地写一个管道的最大字节数
}
1、 功能测试宏
判断是否支持某一个标准:
例如我们需要使用ANSI C 可使用 __STDC__
例如
#ifdef __STDC__
void func(const char *str)
#else
Void func(char *str)
#endif
- apue第二章
- APUE第二章
- apue 第二章笔记
- APUE第二章
- APUE学习第二章
- APUE第二章 Unix标准及实现
- [APUE]第二章UNIX标准及实现
- 【qianlong88的APUE读书笔记】第二章:uinx标准化及实现
- 【APUE】2、第二章UNIX标准及实现
- APUE读书笔记-第二章 unix标准及实现
- 关于apue第二章获取绝对路径长度程序path_alloc()分析
- APUE-第二章学习-UNIX标准化及实现-习题
- APUE 第二版 习题3.6
- APUE读书笔记(2.0) ——第二章 Unix 标准化及实现
- APUE(UNIX环境高级编程第二版)函数归纳(3-7章)
- apue学习第五天——UNIX标准及实现(第二章)
- apue学习第二十一天——IPC基础(第十五章)
- apue《UNIX环境高级编程第三版》第二章答案详解
- 什么是AD域控制器
- 很有用的
- 构建ASP.NET网站十大必备工具(2)
- linux上rz/sz的安装使用
- SQL优化
- apue第二章
- PostGreSql 手动安装
- DDR内存布线指导
- jquery 的排序插件
- RANG 范围限制,导致不能遍历到期望的位置
- Ubuntu无线密码破解--aircrack-ng
- peekmessage
- 项目管理的三个重要概念:检查点、里程碑、基线
- 在VC++中读写INI文件