電子書籍の厳選無料作品が豊富!

以下のURLで、
https://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=al
No.14のC 言語の write の仕様そのもので、第一引数はファイルディスクリプタですね。
(ファイルディスクリプタについては御自身で調べてみてください)
固定値として定義されているのは、標準ストリーム ファイルの
 0 … 標準入力 (write では使われない)
 1 … 標準出力
 2 … 標準エラー出力
です。(3 以降は各プロセスでオープンされたファイルやソケットやデバイスを
指しており、固定値ではなくプロセス毎に異なる値となります。)
括弧の所がよくわかりません。教えていただけると幸いです。すみません。

A 回答 (2件)

No.1です。



>言葉が難しすぎるので、もう少し分かりやすく教えていただけないでしょうか?

どういった経緯でこのような質問に至ったのかはわかりませんが、No.1で回答した説明で分からないということは、絶望的に基礎知識が不足しているということだと思います。言うなれば、英単語と西洋文化のことを全く知らずにアメリカ人と英会話を楽しもうとしているようなものです。

「ファイルデスクリプタ」は、オペレーティングシステム(OS)の概念です。C言語など高級言語の多くはOS上でプログラムを実行することを前提にしたライブラリが豊富に用意されているため、OSのことをあまりよく知らなくてもプログラミングできるようになっていますが、機械語で作成したプログラムをOS上で動作させるような場合には、コンピュータアーキテクチャ以外にOSのことも熟知する必要があります。まずはコンピュータの動作原理とオペレーティングシステムの役割について学習されることをお勧めします。これらの知識は、QAサイトで一問一答形式で答えられるような内容ではありません。
    • good
    • 0

>括弧の所がよくわかりません。

教えていただけると幸いです。すみません。

質問文の「()」で囲まれた部分が知りたいということでしょうか?一応C言語ということで説明します。

>(ファイルディスクリプタについては御自身で調べてみてください)

https://www.google.com/search?q=%E3%83%95%E3%82% …

>(write では使われない)

0は、ユーザプログラム側から見ると入力専用端になっているからです。親プロセス(というかシェル)は、子プロセスの0に対応するソケットにはwrite()のみ、1と2に対応するソケットからはread()のみを行います。ユーザプログラム内でfork()して子プロセスを生成するようなプログラムであれば、必ずしもそれに従うわけではないため、自前で入出力端をセットアップするプログラムを書きます。

>(3 以降は各プロセスでオープンされたファイルやソケットやデバイスを指しており、固定値ではなくプロセス毎に異なる値となります。)

ユーザプログラム内でopen()とかsocket()とかすると都度自動的に割り当てられるためです。私が知る限りの処理系では、空いている最小番号が割り当てられます。厳密には「3以降は」は若干間違いで、0~2もclose()したら次回open()などすると0などが割り当てられることがあります。
    • good
    • 0
この回答へのお礼

そうです。言葉が難しすぎるので、もう少し分かりやすく教えていただけないでしょうか?すみません。

お礼日時:2021/07/13 16:19

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!