linux posix 标准,技术: Posix标准一览

66b52468c121889b900d4956032f1009.png

8种机械键盘轴体对比

本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?

集中认识Unix, BSD, SUS, LSB以及 POSIX 各种理论东西.

简介

我曾经在学习系统编程的时候,发现各种不同的调用时,总是要涉及标准(man page),

当时其实是不在意的,因为不知道有啥区别, 打个比方:man wait1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21NAME

wait, waitpid, waitid - wait for process to change state

SYNOPSIS

#include

pid_t wait(int *wstatus);

pid_t waitpid(pid_t pid, int *wstatus, int options);

int waitid(idtype_t idtype, id_t id, siginfo_t *infop, int options);

/* This is the glibc and POSIX interface; see

NOTES for information on the raw system call. */

Feature Test Macro Requirements for glibc (see feature_test_macros(7)):

waitid():

_XOPEN_SOURCE

|| /* Since glibc 2.12: */ _POSIX_C_SOURCE >= 200809L

|| /* Glibc versions <= 2.19: */ _BSD_SOURCE

上面的 200809L 就是指的一个标准。

详解

Posix

POSIX,即Portable Operating System Interface,可移植操作系统接口。IEEE最初开发POSIX标准,是为了提高UNIX环境下应用程序的可移植性。然而POSIX并不局限于UNIX。许多其它操作系统,例如DEC OpenVMS和Microsoft Windows NT都支持POSIX标准。

POSIX现在已经发展成为一个非常庞大的标准族,某些部分正处于开发过程中。POSIX定义了一个接口,而非一种实现,所以并不区分系统调用和库函数。标准中所有的例程都是宏和函数。POSIX接口连接了OS和应用程序。符合POSIX接口的OS和应用程序可以无缝交流。

Linux基本逐步上实现了POSIX兼容,但并没有参加正式的POSIX认证。如Linux的线程实现版本和POSIX标准之间还是存在着细微的差别,最明显的是关于信号处理部分。微软的Windows NT至少部分实现了POSIX兼容。

(下面只谈论Posix1. 而不谈论Posix2.,因为用的少)

SUSv3,Berkerly,BSD

200809L就是指的一个标准,一般是指SUSv4或者POSIX.1-2008 (可以理解成同一标准的两种称谓)。

一般系统编程(或者在Linux下进行开发),为了兼容不同的Linux或者Unix系统,就要看看这些标准;个人把SUSv3或者POSIX.1-2001视为主流标准(遵循这个标准的函数/系统调用封装函数,一般可以随便用而不用担心兼容性问题, 因为类nix系统一般遵循POSIX标准)

不管类nix中有都多少名称,例如BSD啊,Berkerly啊,抓住POSIX标准就可以了。因为平台太多,没精力逐个对付啊;看下boost是怎么在定义的平台:

boost_platform.png

补充,你看看CPP这些宏是怎么定义的,来看一下Boost怎么定义的

libstdcpp.png

LSB

Linux Standard Base,为什么会有一个Linux标准?

因为Linux本质上和Unix相同,但是发展到后面也是存在差别的,特别是Linux会有自己的许多方便的定义。

(包括像系统调用,不同系统提供的系统调用服务例程或者实现方式不一样)

但是,你可以把LSB看做是POSIX和SUS的超集(父集),就像Linux的IPC通信,既借鉴了System V的“Shared Memory”, “Semaphore”, “Message Queues”, 又借鉴了Berkerly的“Signals, Pipes”。

需要了解更多么?谁知道呢?

参考

总结

这是我在Linux系统编程时曾经遇到的问题,个人因为觉得烦不过,就草草的翻看了一下理论;

总的来说,你不用去看wiki了,核心的遵循一下POSIX1.2001或者比较新的POSIX1.2008即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值