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を表します
について
$ ./a.out 5 5<>temp.fooも同様に理論知識を補う必要がある.
結果はread writeです
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です