標準入出力

せりか式 - C 言語チュートリアル - 標準入出力

標準入出力

C言語では、標準入力(stdin), 標準出力(stdout), 標準エラー出力(stderr)がプログラムの実行時に開かれます。
これらは、そのような入出力が固定されているわけではなく、 単にファイルディスクリプタが0, 1, 2のデバイスがそれぞれに対応しているだけです。
これは言い換えるとプログラム中で、ファイルディスクリプタの0, 1, 2番を切り替えることで 実行中でも動的に標準入出力を切り替えることを意味しています。
使用するヘッダファイル:
  UNIX系: unistd.h (以下はopenを使用するために必要 sys/types.h, sys/stat.h, fcntl.h)
  Windows系: io.h

ファイルディスクリプタの切り替えは、dupdup2を用いることで行うことができます。
以下に例を挙げます。
Windowsでは、dup, dup2の代わりに_dup, _dup2という名前になります。

プログラム
    1: int backup, fd;
    2: backup = dup(1);                               // 標準出力のバックアップを作成しておく
    3: fd = open("output.txt", O_WRONLY | O_CREAT);   // 標準出力に割り当てるファイルを開く
    4: dup2(fd, 1);                                   // 先ほど開いたファイルのディスクリプタのコピーを1番に作成する
    5:                                                // この時点で標準出力はoutput.txtに切り替えられています
    6: dup2(backup, 1);                               // 標準出力を元に戻す
    7: close(backup);                                 // 標準出力のバックアップを閉じる


トップへ