##
3 ファイル記述子の操作

これらの関数は、ファイル記述子を使って参照されている I/Oストリームを操作します。

ファイル記述子とは現在のプロセスから開かれたファイルに対応する小さな整数です。 例えば、標準入力のファイル記述子はいつでも 0 で、標準出力は 1、標準エラーは 2 です。 その他にさらにプロセスから開かれたファイルには 3、4、5、などが割り振られます。 「ファイル記述子」という名前は少し誤解を与えるものかもしれませんが、 Unixプラットフォームにおいて、ソケットやパイプもファイル記述子によって参照されます。

`close`( | fd)

  ファイルディスクリプタ fd を閉じます。 利用できる環境: Macintosh、 Unix、 Windows

  注意: 注:この関数は低レベルの I/O のためのもので、`open()` や `pipe()` が返すファイル記述子に対して適用しなければ なりません。組み込み関数 `open()` や `popen()` 、 `fdopen()` の返す ``ファイルオブジェクト'' を閉じるには、 オブジェクトの `close()` メソッドを使ってください。

`dup`( | fd)

  ファイル記述子 fd の複製を返します。 利用できる環境: Macintosh、 Unix、 Windows.

`dup2`( | fd, fd2)

  ファイル記述子を fd から fd2 に複製し、必要なら後者の 記述子を前もって閉じておきます。 利用できる環境: Macintosh、Unix、Windows

`fdatasync`( | fd)

  ファイル記述子 fd を持つファイルのディスクへの書き込みを 強制します。メタデータの更新は強制しません。 利用できる環境: Unix

`fpathconf`( | fd, name)

  開いているファイルに関連したシステム設定情報 (system configuration information) を返します。 name には取得したい設定名を指定します; これは定義済みのシステム固有値名の文字列で、多くの標準 (POSIX.1、 Unix 95、 Unix 98 その他) で定義されています。 プラットフォームによっては別の名前も定義しています。 ホストオペレーティングシステムの関知する名前は `pathconf_names` 辞書で与えられています。このマップオブジェクトに入っていない設定 変数については、 name に整数を渡してもかまいません。 利用できる環境: Macintosh、Unix

  もし name が文字列でかつ不明である場合、 `ValueError` を送出します。name の指定値がホストシステムでサポートされておらず、 `pathconf_names` にも入っていない場合、`errno.EINVAL` をエラー番号として `OSError` を送出します。

`fstat`( | fd)

  `stat()` のようにファイル記述子 fd の状態を返します。 利用できる環境: Macintosh、Unix、Windows

`fstatvfs`( | fd)

  `statvfs()` のように、ファイル記述子 fd に関連 づけられたファイルが入っているファイルシステムに関する情報を返します。 利用できる環境: Unix

`fsync`( | fd)

  ファイル記述子 fd を持つファイルのディスクへの書き込みを強制します。 Unixでは、ネイティブの `fsync()` 関数を、Windows では MS `_commit()` 関数を呼び出します。

  Python のファイルオブジェクト f を使う場合、f の内部バッファ を確実にディスクに書き込むために、まず `f.flush()` を実行し、 それから `os.fsync(f.fileno())` してください。 利用できる環境: Macintosh、Unix、2.2.3 以降では Windows も

`ftruncate`( | fd, length)

  ファイル記述子 fd に対応するファイルを、サイズが最大で length バイトになるように切り詰めます。 利用できる環境: Macintosh、Unix

`isatty`( | fd)

  ファイル記述子 fd が開いていて、tty(のような)装置に接 続されている場合、`1` を返します。そうでない場合は `0` を返 します。 利用できる環境: Macintosh、Unix

`lseek`( | fd, pos, how)

  ファイル記述子 fd の現在の位置を pos に設定します。 pos の意味は how で修飾されます: ファイルの先頭からの相対には `0` を設定します; 現在の位置からの相対には`1` を設定します; ファイルの末尾からの相対には `2` を設定します。 利用できる環境:Macintosh、 Unix、Windows。

`open`( | file, flags[, mode])

  ファイル file を開き、flag に従って様々なフラグを 設定し、可能なら mode に従ってファイルモードを設定します。 mode の標準の設定値は `0777` (8進表現) で、先に 現在の umask を使ってマスクを掛けます。新たに開かれたファイルの のファイル記述子を返します。利用できる環境:Macintosh、Unix、Windows。 フラグとファイルモードの値についての詳細は C ランタイムのドキュメントを 参照してください; (`O_RDONLY` や `O_WRONLY` のような) フラグ定数はこのモジュールでも定義されています (以下を参照してください)。

  注意: この関数は低レベルの I/O のためのものです。通常の利用では、 `read()` や `write()` (やその他多くの) メソッドを持つ 「ファイルオブジェクト」 を返す、組み込み関数 `open()` を 使ってください。 ファイル記述子を「ファイルオブジェクト」でラップするには `fdopen()` を使ってください。

`openpty`( | )

  新しい擬似端末のペアを開きます。ファイル記述子のペア `(master, slave)` を返し、それぞれ pty および tty を表します。(少しだけ) より可搬性のあるアプローチとしては、 `pty` モジュールを使ってください。 利用できる環境: Macintosh、いくつかの Unix系システム

`pipe`( | )

  パイプを作成します。ファイル記述子のペア `(r, w)` を返し、それぞれ読み出し、書き込み用に使うことができます。 利用できる環境: Macintosh、Unix、Windows

`read`( | fd, n)

  ファイル記述子 fd から最大で n バイト読み出します。 読み出されたバイト列の入った文字列を返します。fd が参照して いるファイルの終端に達した場合、空の文字列が返されます。 利用できる環境: Macintosh、Unix、Windows。

  注意: この関数は低レベルの I/O のためのもので、`open()` や `pipe()` が返すファイル記述子に対して適用しなければ なりません。組み込み関数 `open()` や `popen()` 、 `fdopen()` の返す ``ファイルオブジェクト'' 、あるいは `sys.stdin` から読み出すには、オブジェクトの `read()` メソッドを使ってください。

`tcgetpgrp`( | fd)

  fd (`open()` が返す開かれたファイル記述子) で与えられる端末に関連付けられたプロセスグループを返します。 利用できる環境: Macintosh、Unix

`tcsetpgrp`( | fd, pg)

  fd (`open()` が返す開かれたファイル記述子) で与えられる端末に関連付けられたプロセスグループを pg に設定します。 利用できる環境: Macintosh、Unix

`ttyname`( | fd)

  ファイル記述子 fd に関連付けられている端末デバイスを特定する 文字列を返します。fd が端末に関連付けられていない場合、 例外が送出されます。 利用できる環境: Macintosh、Unix

`write`( | fd, str)

  ファイル記述子 fd に文字列 str を書き込みます。 実際に書き込まれたバイト数を返します。 利用できる環境:Macintosh、 Unix、Windows。

  注意: この関数は低レベルの I/O のためのもので、`open()` や `pipe()` が返すファイル記述子に対して適用しなければ なりません。組み込み関数 `open()` や `popen()` 、 `fdopen()` の返す ``ファイルオブジェクト'' 、あるいは `sys.stdout`、`sys.stderr` に書き込むには、オブジェクトの `write()` メソッドを使ってください。

以下のデータ要素は `open()` 関数の flags 引数を 構築するために利用することができます。いくつかのアイテムは 全てのプラットフォームで使えるわけではありません。 何が使えるか、また何に使うのかといった説明は open(2) を参照してください。

`O_RDONLY`
`O_WRONLY`
`O_RDWR`
`O_APPEND`
`O_CREAT`
`O_EXCL`
`O_TRUNC`

  `open()` 関数の flag 引数のためのオプションフラグです。 これらの値はビット単位 OR を取れます。 利用できる環境: Macintosh、 Unix、Windows。

`O_DSYNC`
`O_RSYNC`
`O_SYNC`
`O_NDELAY`
`O_NONBLOCK`
`O_NOCTTY`
`O_SHLOCK`
`O_EXLOCK`
  上のフラグと同様、`open()` 関数の flag 引数のための オプションフラグです。これらの値はビット単位 OR を取れます。 利用できる環境: Macintosh、 Unix。

`O_BINARY`
  `open()` 関数の flag 引数のためのオプションフラグです。 この値は上に列挙したフラグとビット単位 OR を取ることができます。 利用できる環境: Windows。

`O_NOINHERIT`
`O_SHORT_LIVED`
`O_TEMPORARY`
`O_RANDOM`
`O_SEQUENTIAL`
`O_TEXT`
  `open()` 関数の flag 引数のためのオプションフラグです。 これらの値はビット単位 OR を取ることができます。 利用できる環境: Windows

`SEEK_SET`
`SEEK_CUR`
`SEEK_END`
  `lseek()` 関数のパラメータです。 値はそれぞれ 0、 1、 2 です。 利用できる環境: Windows、 Macintosh、 Unix バージョン 2.5 で 新たに追加 された仕様です。