8

端末とプロセスの仕組みについて一般的な質問があります。

どのプロセスからでも、stdout (つまり、ファイル記述子 2) に書き込むと、ターミナル ウィンドウに描画されます。私の質問は、これが実際にどのように実装されているかです。stdout は、端末がコンテンツを読み込んで画面に描画し続ける実際の「ダミー」ファイルですか? または、プロセス/stdout ストリームとターミナルの間にある種の IPC がありますか?

ターミナルと言うときは、Mac のターミナルなどの一般的な GUI ターミナル/コンソールを意味することに注意してください。

PSこの質問が不明な場合はお知らせください。喜んでもう一度説明します:)

ありがとう!

4

3 に答える 3

4

stdio.h をインクルードすると、stdout はそこで定義された変数になります。

ウィキペディアを引用すると

stdout - 標準出力ストリーム (通常は表示端末) を参照する FILE へのポインタ

そして、Russ C が述べたように、Unix ではすべてがファイルなので、その点であなたは正しいです。

そして明らかに、開かれているすべての UNIX プログラムには、デフォルトで、出力、入力、およびエラー ストリームがそれぞれ stdout、stdin、および stderr に設定されています。ただし、それらは変更できます。「<」を使用してファイルの標準入力をリダイレクトするターミナルのように、おそらく次のようなステートメントで行います

mysql -u root -p dbname < ./data.sql

これは、実装の実際の詳細に関するすべての質問に実際に答えているわけではないと思いますが、それがファイル ストリームであることを知っていれば、何が起こっているのかについてかなり良いアイデアを得ることができるでしょう。

于 2013-04-10T23:56:07.100 に答える