- 266 名前:login:Penguin mailto:sage [2010/01/07(木) 02:33:57 ID:Nm3OilD9]
- >>265
シェルのリダイレクトは、実行するコマンドのプロセスのファイルディスクリプタを、 dup2 システムコールを使って、別のディスクリプタへ結びつける機能です 具体的には以下のようなコードに直接対応します // > outfile 2>&1 の場合 int fd = open("outfile", O_WRONLY|O_CREAT|O_TRUNC, 0644); dup2(fd, STDOUT_FILENO); // > outfile dup2(STDOUT_FILENO, STDERR_FILENO); // 2>&1 // > outfile 2> outfile の場合 int fd1 = open("outfile", O_WRONLY|O_CREAT|O_TRUNC, 0644); dup2(fd1, STDOUT_FILENO); // > outfile int fd2 = open("outfile", O_WRONLY|O_CREAT|O_TRUNC, 0644); dup2(fd2, STDERR_FILENO); // 2> outfile > outfile 2> outfile というのは同じ名前のファイルを独立に作って、それぞれが書き込むという意味になります よって標準出力と標準エラーの両方を書き込むことはできません(そういう意味のコードに対応します)
|

|