ファイルと標準入出力 1. ファイル、ディレクトリの概念とプロセス との関係を理解する 2. 標準入出力の概念を理解する ファイル • ファイルはデータが直線的に並んだもの Abcd0123$%##18ls.….. • Cのソースファイル、実行ファイルもファイル od –c [ソースファイル名] • 実際に改行を行うのは端末プログラムの機能 ファイル内容の表示 エディタでもできるが… % cat [ファイル名] % less [ファイル名] • スペースキーで次ページ • b で戻る • q で終了 ディレクトリ • すべてのファイルはどれかのディレクトリ(あるい はフォルダ)に属している • ディレクトリ内にディレクトリを設けることもできる → ディレクトリは階層的になっている ディレクトリツリー 一番上の “/” をルートディレクトリという / usr home etc 上位のディレクトリを親 ディレクトリという eng 作業ディレクトリ • プロセスはそれぞれ、どれかのディレクトリ上で動作 している。このようなディレクトリを作業ディレクトリあ るいはカレント(ワーキング)ディレクトリという % pwd ← print working directory の略 • 特に指定しなければ、ファイルの閲覧、作成は作業 ディレクトリ中のファイルに対して行われる • 作業ディレクトリはプロセスごとに異なってもよい • ls を実行すると作業ディレクトリにあるファイルの一 覧が表示される • ログインしたときの作業ディレクトリは各自の ホームディレクトリ • 作業ディレクトリを変更するには cd を実行す る % cd /etc % pwd • “..” (ピリオド2つ)は親ディレクトリ、“.” (ピリ オド1つ)は現在の作業ディレクトリをあらわす % cd .. • 引数なしで cd を実行するとホームディレクトリ に移動する ファイルの指定 作業ディレクトリ以外のディレクトリにあるファイルを指 定するには… • 一番上からたどって名前を指定する → 絶対パス名、例 /usr/include/stdio.h % less /usr/include/stdio.h • 現在のディレクトリからたどる名前を指定する → 相対パス名、例 ../../ファイル名 (Windows では / ではなく ¥ が用いられる) プロセスの入出力 プロセスはキーボードからデータを入力し、端末に 表示する(出力する)ことができる scanf printf プロセス キーボード 端末 本当はこうなっている キーボード 端末 プロセス scanf printf • キーボード、端末に直結されているわけではない • それぞれにファイルを接続することもできる キーボード 端末 プロセス ファイル1 ファイル2 • このような切換をリダイレクトという • リダイレクトは入力のみ、あるいは出力のみで行う ことも可能 出力のリダイレクト コマンドの後に “> ファイル名” をつける % cat /etc/hosts % cat /etc/hosts > file1 % cat file1 画面に表示されていた内容が file1 に書き込まれる 入力のリダイレクト コマンドの後に “< ファイル名” をつける % cat ← キーボードから入力する ← Ctrl-D を入力すると終了する (引数なしで実行されたとき、cat はキーボードから 入力されたデータをそのまま出力する) (Ctrl-D はファイルの終わり(EOF;end of file)を 示す特別な入力) % cat < /etc/hosts 入出力のリダイレクト 入力、出力のリダイレクトを組み合わせる % cat < /etc/hosts > file2 % cat > file2 < /etc/hosts どちらの順番でもよい キーボード・端末とファイルは同じ方法で アクセスできるように作られている 標準入出力 • 一般に、ファイルにアクセスするためには、そのた めの準備作業や後始末を必要とする • 一組の入出力はあらかじめ標準装備されている 標準入力 標準出力 プロセス 両者をあわせて標準入出力という • 標準入出力に対しては準備作業や後始末をする 必要がない
© Copyright 2024 Paperzz