POSIXで廃止されたAPI達
ひとまず、入力はしないもののPOSIXで廃止としてマークされたAPIを見てみる。Issue7で廃止されたヘッダは4つ。
STREAMS
- http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/stropts.h.html - ヘッダ
- http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap02.html#tag_02_01_05_09 - _XOPEN_STREAMS
- http://ja.wikipedia.org/wiki/STREAMS
- https://developer.apple.com/legacy/library/documentation/Carbon/Reference/Open_Transport/open_transport.pdf - OpenTransportのリファレンス
STREAMSは由緒正しいUNIXのI/Oシステムだが、どのBSD/Linuxにも採用されず消えた。OpenTransport(OT)のリファレンスにはUnsupported functionsとして、OS XのネットワークスタックはSTREAMSでないからと大量の関数が列挙されている。OT自体は10.9でSDKから消えた。(ちなみにWindowsは最初からsockets風のAPIであるWinSockが事実上の標準となったのでSTREAMS時代が存在しない)
ioctlで多くの設定を制御するスタイルになっている。このPOSIX ioctl(requestがint)はBSDのioctl(requestがlong)とABI互換が無い。
TRACING
使ったことが無い。検索するところによるとAIXには実装が存在するらしいが。。なんでこれ標準化したんだろうか。。
ulimit
上の2つとはうってかわって健全な人間ならば誰しも一度は使ったことの有るulimitも廃止予定とされている。
代替としては、XOPENからsys/resource.hを標準化し、setrlimitとgetrlimitを使用することとなっている。
utime
ファイルの時刻を変更するutimeも廃止予定となっているが、代替として提示されているutimensatもなかなか微妙なポジションになっている。utimensatが標準化されたのはIssue7なので新登場の関数を廃止関数の代替として提案していることになる。
utimes等はtimesecの配列を取るが、utimeは専用の構造体を定義している。POSIXってこの手の状況でポインタを2つ取るように作らない傾向が有るのは何故だろう。pipe然り。