C言語を学び始めて、頻繁に触れる標準入力と標準出力。
私はこれを
「キーボードで入力」
「モニターに出力」
と認識したまま勉強をスタートしました。
ほんの少しC言語になれてきた今、改めて用語を間違えて覚えていないか調べてみます。
【結論】この認識は正しい
標準入出力が必要となったときに、プログラムの中であえて指定しない限り、モニターとキーボードから参照します。
標準出力の場合は、ファイルディスクリプタ(ファイル記述子・ファイルハンドラともいう)は1を割り当てられます。
ファイルディスクリプタ(FD)とは、ファイルにアクセスできる廊下の番号です。FDはファイルごとに用意されていて、0〜2までは役割が固定です。
ファイルディスクリプタ(FD)(英:file descriptor)とは -「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典
廊下というと大袈裟かもしれませんが、ファイルについた長い紐があって、それをひっぱれば欲しいファイルが参照できるってイメージが近いかもしれません。FDはその紐についている番号です。
- FD:0 =標準入力(キーボード)
- FD:1 =標準出力(モニター)
- FD:2 =標準エラー出力(モニター)
- FD:3以降は、FDが必要になった時に生成
標準入出力のかわりに、他のディバイスに入出力することは、リダイレクト(リタイレクション)と言います。
例えば、別ファイルを新規作成して結果を表示させたり、印刷することもその一つです。
普段からよく使う
echo "aiueo" > file2
などもリダイレクションの一つということです。
リダイレクションの時に><を使うと、簡単にファイルを参照できます。
■出力のリダイレクション
ls > file1 //lsの結果をfile1へ出力
■入力のリダイレクション
$ cat -n << EOF >file2
heredoc > $USER
heredoc > EOF
1.sato (環境変数のUSER値)
■入出力を同時に行う
$ ls > file1 //lsの結果をfile1へ出力
$ cat file1 //file1を読む
> file1
> file2
$ cat file2
> //file2に何もない場合は空白が表示される
$< file1 > file2 //file1から入力された内容をfile2へ出力
$ cat file2 //file2を読む
> file1
> file2
参照:https://wa3.i-3-i.info/word14384.html
参照:https://www.sophia-it.com/content/Standard+Output
参照:https://milestone-of-se.nesuke.com/sv-basic/linux-basic/fd-stdinout-pipe-redirect/