[解決済み】stdin, stdout, stderrについて混乱していませんか?
質問
この3つのファイルの目的がよくわからないのですが。私の理解が正しければ
stdin
は、プログラムがプロセス内のタスクを実行するために、そのリクエストに書き込むファイルです。
stdout
は、カーネルが出力を書き込み、要求したプロセスがその情報にアクセスするためのファイルであり
stderr
は、すべての例外が入力されるファイルです。これらのファイルを開いて実際に発生するかどうか調べてみたが、それを示唆するようなものは何もなかった。
私が知りたいのは、これらのファイルの目的は一体何なのかということです。技術的な専門用語はほとんど使わず、絶対にダンマリで答えてください
解決方法は?
標準入力 - これは ファイルハンドル というように、プロセスが情報を取得するために読み取るものです。
標準出力 - あなたのプロセスは、このファイルハンドルに従来の出力を書き込みます。
標準エラー - あなたのプロセスは、このファイルハンドルに診断出力を書き込みます。
このくらいで、もういいや:-)
もちろん、そのほとんどは慣習によるものです。もしあなたが望むなら、診断情報を標準出力に書き出すことを止めるものは何もありません。3つのファイルハンドルを完全に閉じて、自分のファイルをI/O用にオープンすることもできます。
プロセスが起動したとき、すでにこれらのハンドルが開かれているはずで、そこから読んだり、書き込んだりするだけでよいのです。
デフォルトでは、おそらく端末デバイスに接続されています(例.
/dev/tty
しかし、シェルでは、プロセスの開始前に、これらのハンドルと特定のファイルやデバイス(あるいは他のプロセスへのパイプライン)との接続を設定することができます(可能な操作のいくつかはかなり賢いものです)。
例として挙げられるのは
my_prog <inputfile 2>errorfile | grep XYZ
ということになります。
-
のプロセスを作成します。
my_prog
. -
オープン
inputfile
を標準入力(ファイルハンドル0)とします。 -
開く
errorfile
を標準エラーとします(ファイルハンドル2)。 -
作成
もう一つ
のプロセスです。
grep
. -
の標準出力をアタッチします。
my_prog
の標準入力にgrep
.
コメントについて
devフォルダーにあるこれらのファイルを開くと、プロセスが実行されている出力が表示されないのはなぜですか?
それは、通常のファイルではないからです。UNIXでは
すべて
ファイルシステムのどこかにあるファイルだからといって、最下層がそうであるとは限らない。のほとんどのファイルは
/dev
階層はキャラクタデバイスまたはブロックデバイスであり、事実上デバイスドライバです。デバイスにはサイズはありませんが、メジャーとマイナーのデバイス番号があります。
それらを開くと、物理的なファイルではなくデバイスドライバに接続され、デバイスドライバは賢いので、別々のプロセスは別々に処理されるべきであると知っています。
同じことは、Linuxの
/proc
ファイルシステムです。これらは実際のファイルではなく、カーネル情報へのゲートウェイとして厳重に管理されているだけです。
関連
-
[解決済み】WSL - GEDIT サーバーを開始することができません。接続できませんでした。接続が拒否されました[closed]。
-
[解決済み] ls -al 出力列フィールド
-
[解決済み] Linuxで.dllを使用することは可能です [重複].
-
[解決済み] PowerShellで文字数、単語数、行数を数える
-
[解決済み] bashの「#$」はどういう意味ですか?
-
[解決済み] ワイルドカードマッチングに基づいて、現在のフォルダとサブフォルダ内のすべてのファイルを再帰的に検索するにはどうすればよいですか?
-
[解決済み] Bashで標準出力と標準エラーの両方をファイルにリダイレクトして追記する方法
-
[解決済み] Pythonで標準エラー出力するには?
-
[解決済み] 出力をファイルや標準出力にリダイレクトする方法
-
[解決済み] 標準出力ではなく標準エラー出力にパイプを通すにはどうしたらいいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】 "find: paths must priore expression:" カレントディレクトリのファイルも見つける再帰的検索を指定するには?
-
[解決済み】リモートLinuxマシンでC++をコンパイルする - "clock skew detected "の警告が表示される
-
[解決済み】ハイフン(-)で始まるファイル名を処理する方法は?
-
[解決済み] gzip: stdin: not in gzip format tar: 子プロセスがステータス 1 を返しました。エラーは回復不可能:現在終了中
-
[解決済み】画面 ターミナル '/dev/pts/0' を開くことができない - 確認してください。
-
[解決済み] Ubuntuにchkconfigをインストールするにはどうしたらいいですか?
-
[解決済み] 共有メモリページとフォーク
-
[解決済み] SIGRTMAXとSIGRTMINの使い方は?
-
[解決済み] bashの「#$」はどういう意味ですか?
-
[解決済み] Grep ディレクトリ内のすべてのファイルを文字列1および文字列2で検索します。