posix 与 ansi c

来源:互联网 发布:梦幻超级土地公数据 编辑:程序博客网 时间:2024/06/08 03:30
  • ANSI C:这一标准是 ANSI(美国国家标准局)于 1989 年制定的 C 语言标准。 后来被 ISO(国际标准化组织)接受为标准,因此也称为 ISO C。
    ANSI C 的目标是为各种操作系统上的 C 程序提供可移植性保证,而不仅仅限于 UNIX。 该标准不仅定义了 C 编程语言的语发和语义,而且还定义了一个标准库。这个库可以根据 头文件划分为 15 个部分,其中包括:字符类型 (<ctype.h>)、错误码 (<errno.h>)、 浮点常数 (<float.h>)、数学常数 (<math.h>)、标准定义 (<stddef.h>)、 标准 I/O (<stdio.h>)、工具函数 (<stdlib.h>)、字符串操作 (<string.h>)、 时间和日期 (<time.h>)、可变参数表 (<stdarg.h>)、信号 (<signal.h>)、 非局部跳转 (<setjmp.h>)、本地信息 (<local.h>)、程序断言 (<assert.h>) 等等。
  • POSIX:该标准最初由 IEEE 开发的标准族,部分已经被 ISO 接受为国际标准。该标准的具体内容 见 1.1.3。POSIX.1 和 POSIX.2 分别定义了 POSIX 兼容操作系统的 C 语言系统接口 以及 shell 和工具标准。这两个标准是通常提到的标准。POSIX 表示可移植操作系统接口(Portable Operating System Interface ,缩写为 POSIX 是为了读音更 像 UNIX)。电气和电子工程师协会(Institute of Electrical and Electronics Engineers,IEEE) 最初开发 POSIX 标准,是为了提高 UNIX 环境下应用程序的可移植性。然而,POSIX 并不局限于 UNIX。 许多其它的操作系统,例如 DEC OpenVMS 和 Microsoft Windows NT,都支持 POSIX 标准,尤其是 IEEE Std. 1003.1-1990(1995 年修订)或 POSIX.1,POSIX.1 提供了源代码级别的 C 语言应用编程 接口(API)给操作系统的服务程序,例如读写文件。POSIX.1 已经被国际标准化组织(International Standards Organization,ISO)所接受,被命名为 ISO/IEC 9945-1:1990 标准。


  • 系统调用

    系统调用是操作系统提供给外部程序的接口。在 C 语言中,操作系统的系统调用通常通过 函数调用的形式完成,这是因为这些函数封装了系统调用的细节,将系统调用的入口、参数以及 返回值用 C 语言的函数调用过程实现。在 Linux 系统中,系统调用函数定义在 glibc 中

    谈到系统调用时,需要注意如下几点:

    • 系统调用函数通常在成功时返回 0 值,不成功时返回非零值。如果要检查失败原因,则 要判断 errno 这个全局变量的值,errno 中包含有错误代码。
    • 许多系统调用的返回数据通常通过引用参数传递。这时,需要在函数参数中传递一个 缓冲区地址,而返回的数据就保存在该缓冲区中。
    • 不能认为系统调用函数就要比其他函数的执行效率高。要注意,系统调用是一个非常耗时 的过程。

系统调用

系统调用是操作系统提供给外部程序的接口。在 C 语言中,操作系统的系统调用通常通过 函数调用的形式完成,这是因为这些函数封装了系统调用的细节,将系统调用的入口、参数以及 返回值用 C 语言的函数调用过程实现。在 Linux 系统中,系统调用函数定义在 glibc 中

谈到系统调用时,需要注意如下几点:

  • 系统调用函数通常在成功时返回 0 值,不成功时返回非零值。如果要检查失败原因,则 要判断 errno 这个全局变量的值,errno 中包含有错误代码。
  • 许多系统调用的返回数据通常通过引用参数传递。这时,需要在函数参数中传递一个 缓冲区地址,而返回的数据就保存在该缓冲区中。
  • 不能认为系统调用函数就要比其他函数的执行效率高。要注意,系统调用是一个非常耗时 的过程。
0 0
原创粉丝点击