--> [3分でわかる]標準出力/標準入力とは | BORDERLESSS
scroll

[3分でわかる]標準出力/標準入力とは

C言語を学び始めて、頻繁に触れる標準入力と標準出力。

私はこれを

「キーボードで入力」

「モニターに出力」

と認識したまま勉強をスタートしました。

ほんの少しC言語になれてきた今、改めて用語を間違えて覚えていないか調べてみます。

【結論】この認識は正しい

標準入出力が必要となったときに、プログラムの中であえて指定しない限り、モニターとキーボードから参照します。

標準出力の場合は、ファイルディスクリプタ(ファイル記述子・ファイルハンドラともいう)は1を割り当てられます。

ファイルディスクリプタ(FD)とは、ファイルにアクセスできる廊下の番号です。FDはファイルごとに用意されていて、0〜2までは役割が固定です。

https://wa3.i-3-i.info/word14383.html

ファイルディスクリプタ(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/