POSIX
Unix と呼ばれる OS を規程する標準規格
歴史
。1980 年代~ 1990 年代に独禁法の縛りを脱して Unix でライセンス商売しはじめた AT&T と,それ以前から AT&T のコードから fork して広く使われていた BSD Unix とでライセンス訴訟問題があったり標準化団体が乱立する「Unix戦争」があった
https://twitter.com/kotatsu_mi/status/1273451685424189442
そういった経緯から様々な実装が複数存在しながら標準規格が存在せず同じ「Unix」でも使えたり使えなかったりするコマンドやライブラリが色々あるのが不便だったので,様々な実装(主に AT&T の SystemV とバークレーの BSD)の共通項から Unix としての標準のコマンド,シェル,API などを定めた
https://twitter.com/kotatsu_mi/status/1273452042325913600
IEEE でデジュール標準として制定された IEEE Std. 1003.1-2001 で,Portable Operating System Interface(POSIX)です。末尾が IX になってるのは Unix からの連想だと思います。
https://twitter.com/kotatsu_mi/status/1273452312216780800
POSIX の内容は現在,The Open Group(前世紀に Unix戦争をしていたいくつかの規格化団体が統合したものです)のサイトより最新の IEEE Std. 1003.1-2017 のものや,それより古いものが閲覧可能です。 https://pubs.opengroup.org/onlinepubs/9699919799/
https://twitter.com/kotatsu_mi/status/1273452594434695168
POSIXはあくまで「最低限この API は用意しておいてね」なので,標準との互換性を破壊しない範囲で API を追加したり API に別の挙動を増やしたりするのはおそらく問題にならない。で,C言語はその成り立ち上 POSIX 互換の OS と密接な関係があるので,POSIX 標準にある API もほぼ C の標準的な API としてみんな使っちゃうんですが,実はそういうことをすると Windows とかに持っていったときに困ることがあったり,なかったり。
https://twitter.com/kotatsu_mi/status/1273454999540862976
https://twitter.com/kotatsu_mi/status/1273455184589422592
POSIX のC-API について
man page にはその API がいつの Unix で登場してどの規格に沿っているか,あるいは glibc など GNU の実装者による拡張だったり,特定の *BSD での実装における拡張だったりするのか,というのはわりとだいたい書いてあります。
https://twitter.com/kotatsu_mi/status/1273456500246056961
https://twitter.com/kotatsu_mi/status/1273457136203255809
どの OS 実装で利用できるのかなどを調べるときは FreeBSD の man page のサイトが便利です。複数の商用 Unix,Free Unix-like OS,Linux distribution の man page が一気に調べられます https://freebsd.org/cgi/man.cg
https://twitter.com/kotatsu_mi/status/1273457829731422209