`
brxonline
  • 浏览: 65615 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

UNIX编程(2)-UNIX标准化

    博客分类:
  • C
阅读更多
1.ISO c
2.IEEE POSIX
3.Single UNIX Specification (XSI)
4.查看系统限制的函数

#include <unistd.h>

long sysconf(int name);

long pathconf(const char *pathname, int name);

long fpathconf(int filedes, int name);


例:打印所有可能的sysconf和pathconf的值
#include "apue.h"
#include <errno.h>
#include <limits.h>

static void pr_sysconf(char *, int);
static void pr_pathconf(char *, char *, int);

int
main(int argc, char *argv[])
{
    if (argc != 2)
        err_quit("usage: a.out <dirname>");

#ifdef ARG_MAX
    printf("ARG_MAX defined to be %d\n", ARG_MAX+0);
#else
    printf("no symbol for ARG_MAX\n");
#endif
#ifdef _SC_ARG_MAX
    pr_sysconf("ARG_MAX =", _SC_ARG_MAX);
#else
    printf("no symbol for _SC_ARG_MAX\n");
#endif

/* similar processing for all the rest of the sysconf symbols... */

#ifdef MAX_CANON
    printf("MAX_CANON defined to be %d\n", MAX_CANON+0);
#else
    printf("no symbol for MAX_CANON\n");
#endif
#ifdef _PC_MAX_CANON
    pr_pathconf("MAX_CANON =", argv[1], _PC_MAX_CANON);
#else
    printf("no symbol for _PC_MAX_CANON\n");
#endif

/* similar processing for all the rest of the pathconf symbols... */

   exit(0);
}
static void
pr_sysconf(char *mesg, int name)
{
    long    val;

    fputs(mesg, stdout);
    errno = 0;
    if ((val = sysconf(name)) < 0) {
        if (errno != 0) {
            if (errno == EINVAL)
                fputs(" (not supported)\n", stdout);
            else
                err_sys("sysconf error");
        } else {
            fputs(" (no limit)\n", stdout);
        }
    } else {
        printf(" %ld\n", val);
    }
}

static void
pr_pathconf(char *mesg, char *path, int name)
{
    long    val;

    fputs(mesg, stdout);
    errno = 0;
    if ((val = pathconf(path, name)) < 0) {
        if (errno != 0) {
            if (errno == EINVAL)
                fputs(" (not supported)\n", stdout);
            else
                err_sys("pathconf error, path = %s", path);
        } else {
            fputs(" (no limit)\n", stdout);
        }
    } else {
        printf(" %ld\n", val);
    }
}





5.基本系统数据类型


caddr_t
core address 
clock_t
counter of clock ticks (process time) 
comp_t
compressed clock ticks 
dev_t
device numbers (major and minor) 
fd_set
file descriptor sets 
fpos_t
file position 
gid_t
numeric group IDs

ino_t
i-node numbers 
mode_t
file type, file creation mode
nlink_t
link counts for directory entries 
off_t
file sizes and offsets (signed)
pid_t
process IDs and process group IDs (signed)
ptrdiff_t
result of subtracting two pointers (signed)

rlim_t
resource limits
sig_atomic_t
data type that can be accessed atomically
sigset_t
signal set
size_t
sizes of objects (such as strings) (unsigned)
ssize_t
functions that return a count of bytes (signed) (read, write)

time_t
counter of seconds of calendar time 
uid_t
numeric user IDs

wchar_t
can represent all distinct character codes




分享到:
评论

相关推荐

    UNIX编程艺术 - 扫描版 - 书签

    Shell脚本是UNIX编程中的一个重要组成部分,它允许用户通过编写一系列命令来实现自动化任务处理。通过Shell脚本,用户可以轻松地组合各种命令来完成复杂的任务流程。例如,一个简单的Shell脚本可能包含如下内容: `...

    Unix编程艺术--完整书签版

    《Unix编程艺术》中详细讨论了套接字接口,这是实现网络通信的标准方法。读者将了解到如何使用TCP/IP协议栈构建客户端和服务器程序。 此外,书中还涉及了Unix工具和库的使用,如grep、sed、awk等强大的文本处理工具...

    unix环境高级编程--第章 UNIX标准化及实.doc

    总之,UNIX环境高级编程的第二章,通过详细的讨论UNIX标准化进程及其对UNIX系统实现的影响,向我们展示了如何在保持程序兼容性和可移植性的同时,充分发挥UNIX系统的强大功能。这对于在UNIX环境下进行高级编程的...

    UNIX高级编程5-6(大师著作)

    通过学习《UNIX高级编程》,程序员不仅可以掌握UNIX编程的核心技术,还能培养出系统级别的思维,从而能够设计和编写更高效、更稳定、更健壮的软件系统。无论是对初学者还是经验丰富的开发者,这都是一本极具价值的...

    Unix编程艺术/Unix环境高级编程(第二版)/Unix网络编程(第二版)

    首先,《Unix编程艺术》主要讲述了Unix系统的设计哲学和编程原则,包括简洁、模块化和可组合性等核心思想。书中通过实例解析了如何编写高效、优雅的Unix程序,并讨论了错误处理、进程间通信(IPC)以及Shell脚本编写...

    UNIX----系统编程

    - **POSIX标准**:提供了跨平台的UNIX编程接口,如pthread库用于线程编程。 通过深入学习和实践以上知识点,你将能够熟练地进行UNIX系统编程,开发出高效、稳定的应用程序。记得结合《UNIX系统编程》这样的参考...

    Unix编程艺术.pdf

    7. 系统调用和程序设计接口(APIs):Unix编程中广泛应用了系统调用和标准C语言库函数,它们为应用程序提供了与操作系统底层交互的接口。这些接口具有稳定性和可移植性。 8. 使用Shell脚本:Unix环境下的Shell脚本...

    Linux/UNIX网络编程》-甘刚-电子教案

    在Linux和UNIX系统中,网络编程主要基于Berkeley套接字接口,这是由BSD UNIX引入并被广泛采用的标准API。以下是一些关键的知识点: 1. **套接字接口**:这是Linux和UNIX系统中进行网络编程的基础,包括socket()函数...

    unix环境高级编程----------------------------------

    9. **标准库与C语言接口**:Unix标准库如`stdio.h`, `stdlib.h`, `string.h`, `unistd.h`等提供了大量的函数,是C语言编程的基础。 10. **Shell脚本编程**:Unix shell不仅是一个命令解释器,还是编写自动化任务的...

    QNX-UNIX-POSIX-C函数手册-chm格式.7z

    这份手册详细介绍了C语言标准库以及与QNX、UNIX和POSIX操作系统相关的扩展函数,旨在帮助开发者理解和应用这些系统中的核心编程接口。 首先,C语言是所有现代操作系统的基础,包括QNX、UNIX和POSIX系统。它是一种...

    Unix-Linux-Windows-OpenMP多线程编程.docx

    POSIX 由 IEEE 开发,并由 ANSI 和 ISO 标准化。多数操作系统(包括 Windows NT)都倾向于开发它们的变体版本与 POSIX 兼容。 POSIX 的几个重要组成部分 1. POSIX.1:提供操作系统的 C 语言应用编程接口(API)。 ...

    Unix-Linux-Windows-OpenMP多线程编程.pdf

    POSIX 是由 IEEE(Institute of Electrical and Electronic Engineering)开发的,并由 ANSI(American National Standards Institute)和 ISO(International Standards Organization)标准化。大多数的操作系统...

    Unixshell编程-shell编程简介.pdf

    Unix Shell编程是Unix操作系统中一种强大的脚本编写工具,它允许用户通过编写文本文件来组合和自动化一系列的Unix命令。shell脚本不仅能够简化重复任务,还可以实现复杂的逻辑控制,如条件判断、循环以及函数定义。...

    Java网络编程--Unix域协议:概述

    网络编程API标准IEEE POSIX 1003.1g(也称为POSIX.1g)中定义了对Unix域协议的支持,使用地址族AF_LOCAL(或PF_LOCAL),协议族为PF_LOCAL,替代了传统的AF_UNIX,使得这种协议不仅限于Unix系统,也扩展到了遵循...

    UNIX网络编程第1卷(1-19章)

    这些标准化的接口和模型使得Unix系统上的网络编程具有更好的可移植性和统一性。 书中还提到了作者的其他几部作品,它们分别深入探讨了APUE(Advanced Programming in the Unix Environment)、TCP/IP协议的三个版本...

    UNIX高级编程21-23(大师著作)

    "UNIX高级编程21-23(大师著作)"这个压缩包文件包含了三部分关于这一主题的深度学习资料,分别命名为022.PDF、021.PDF、023.PDF,这些PDF文件很可能是从一本经典的UNIX编程书籍中提取的章节。 UNIX高级编程涵盖了...

    unix网络编程.pdf

    标题《UNIX网络编程》指向的是一本专注于UNIX操作系统网络编程技术的书籍。网络编程,是编写能够让计算机通过网络与其他程序进行通信的程序的活动。这种通信允许程序之间交换数据,可以是简单的文本消息或是复杂的二...

    Unix-Linux编程实践教程(中文清晰带书签).pdf

    《Unix-Linux编程实践教程》是一本面向程序员和系统管理员的实用指南,旨在通过丰富的实例深入浅出地介绍Unix和Linux环境下的系统级编程技术。这本书涵盖了从基本的命令行操作到复杂的系统调用和库函数的使用,是...

    linux/unix系统编程手册附录代码

    《Linux/Unix系统编程手册》是一本深受程序员和系统管理员喜爱的经典著作,它详细阐述了在Linux和Unix操作系统上进行低级编程的各种技术。附录中的代码是书中的实例,旨在帮助读者深入理解和掌握这些系统编程的核心...

Global site tag (gtag.js) - Google Analytics