2012/05/07
- 絶対パスの先頭に
/
が来る事を期待してはいけない
- しかしながら絶対パスの先頭にドライブレターが来る事を期待してはいけない
- UNCパスのホスト名やシェア名はディレクトリではないのでファイルシステムAPIは使えない事を意識しておく
- unixに比べパス内に空白文字が入る可能性が高い事を意識しておく
- ホームディレクトリを意味するパスの先頭チルダは自前で展開する必要があり、またパスの途中にチルダが混じる事は日常的にある
- ソケットディスクリプタに対してもread/writeで送受信できる事を期待してはいけない
- パイプでない標準入力のselectはやっても意味がない
- ディレクトリ内にあるファイルを開き、ハンドルを保持したままディレクトリを消せるのは当たり前だと思わない
- パスのセパレータが
/¥
である事を期待してANSI APIを使ってはいけない
- Cランタイム(POSIX互換API)とWindows APIを併用する際にはerrnoを信用してはならない
- PATH環境変数のセパレータが
:
であることを期待してはいけない
- コマンドラインプログラムの引数はシェルにあたるcmd.exeが展開しているのではなく、プログラム自身が展開しているのでワイルドカードが展開される事を期待してはいけない
- system関数を使う際にコマンドの引数をシングルクォートでクォートしない方が良い
- エスケープシーケンスはリテラルに埋め込まず切り離し可能にしておく
- utf-8にしか存在しないグリフは極力使用しない
- forkは可能な限り使わない
- fork&execはCreateProcessに置き換わるので、なるべく部品化し置き換え易くしておく
- テンポラリファイルの削除をランタイムの後処理に期待してはいけない
- unixドメインソケットや、名前付きパイプファイルは、TCP/IPソケットやWindowsでの名前付きパイプに置き換わるのでファイルシステムを意識した処理を纏めて行い部品化する
- cygwinで出来るよ→ダウト