Apueの3-4.c例の理解...


勉強するたびに記録がないので、ここで記録します.
Linuxでは標準入力が0、標準出力が1、標準エラー出力が2
では./a.out 0は、標準入力が読めるかどうかをテストします.デフォルトの標準入力は端末であるため、端末は読み書き可能である.出力はread write
ただし$./a.out 0$./a.out 1//しばらくここまで書いておくと、理解が間違っているかもしれませんが、また変更します.
$ ./a.out 1 > temp.fooは出力リダイレクト、temp.fooは新しいファイルで、fcntl(1,F_GETFL,0);判断だfooの読み書きプロパティ、新規temp.fooのデフォルトはread writeです
$ ./a.out 0 > temp.fooは同じで、出力はtempにリダイレクトされる.foo、しかし判断するのは依然として標準入力で、つまり端末で、だからやはりread write
//次は./a.out 2 2>>temp.foo
まず理論知識を補う
2はstderrを表します
2>>filename
        #       stderr   "filename". 
では./a.out 2 2>>temp.fooはリダイレクトされたファイルtempをチェックします.fooのファイル記述子2上の属性
について
$ ./a.out 5 5<>temp.fooも同様に理論知識を補う必要がある.
[j]<>filename
        #     "filename",    "filename"  ,         "j"    . 
        #     "filename"   ,       . 
        #        "j"   ,     fd 0, stdin. 
5<>temp.fooは、ファイル記述子5上でファイルtempを開くことを示す.fooは読み取りと書き込みのために、プログラムはtempをチェックします.fooの読み書き属性は、明らかに私は「<>」で、つまり読み書きでこのファイルを開いたのです.
結果はread writeです