アセンブリ言語のファイルディスクリプタとは?

このQ&Aのポイント
  • アセンブリ言語におけるファイルディスクリプタとは、ファイルへの通り道につけられる番号でファイルを識別する目印のことです。
  • 具体的には、標準ストリーム ファイルの0は標準入力、1は標準出力、2は標準エラー出力を示します。
  • この番号はプロセス毎に異なり、3以降は各プロセスでオープンされたファイルやソケットやデバイスを指します。
回答を見る
  • ベストアンサー

アセンブリ言語について。

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

質問者が選んだベストアンサー

  • ベストアンサー
  • wormhole
  • ベストアンサー率28% (1619/5654)
回答No.1

関連するQ&A

  • アセンブリ言語とC言語について。

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

  • プログラミングについて。

    以下のURLの最後で、eaxの「0」を戻り値として使うことができる。とは、戻り値に使わなくてもいいし、使っても良いという事でしょうか?また、なぜ、単に「0」が戻り値として戻ってくるというだけという事でしょうか?は違うのでしょうか?教えていただけると幸いです。すみません。 https://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=al2&namber=34804&rev=&no=0

  • プログラミングについて。

    以下のURLで、 https://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=al2&namber=34804&rev=&no=0 スタックが指し示している値が call 元のアドレス(上図だと c0000)なので、そこにジャンプ。 とはどういう事でしょうか?教えていただけると助かります。すみません。よろしくお願いします。

  • プログラミングについて。

    以下のURLで、 https://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=al2&namber=34804&rev=&no=0 スタックが指し示している値が call 元のアドレス(上図だと c0000)なので、そこにジャンプ。 とはどういう事でしょうか?教えていただけると助かります。すみません。

  • ストリームって?

    プログラミングの超初心者なのですが、現在Cの勉強をしています。1つ分からない言葉があるのですが、「ストリーム」について教えてください。例えば「ファイルストリーム」「標準エラー出力ストリーム」「標準入力ストリーム」などです。この「ストリーム」という動作はどういった動作をさすのか教えていただければ幸いです。

  • ファイルを開く、ストリームを結びつける、とは?

    C言語の標準関数の説明の中に、 「ファイルを開く」 「ストリームと結びつける」 といった表現がでてくるのですが、これはどういう意味ですか? freopenを理解しようとしていたのですが・・・。 ファイルを開くとはFILE構造体を展開する?ファイルディスクリプタをシステムに登録する?・・・意味がいまいち掴めません。「ストリームと結びつける」も同様です。 これらは具体的にどういう意味なのでしょうか?回答よろしくお願いします。

  • WindowsXpProでC言語でCGI

    自宅のXp Proをサーバーにして,Apache2.2やメールサーバを動作させています。昨日,Apacheでssiやcgiを実行可能にして,次のような簡単なプログラムをコンパイルして,hello.exeを作って,試してみました。 #include <stdio.h> #include <conio.h> int main() { printf("Hello"); /*getch();*/ } htmlファイルは, <!--#exec cgi="counter.exe" --> <!--#include file="count.dat" --> <!--#exec cgi="hello.exe" --> としています。実は,counter.exeは自作カウンターなのですが,標準出力が表示されず,しかたなく,#includeでカウンタファイルの値を表示させています。hello.exeも同様にファイルに書き出して,includeすれば大丈夫なのでしょうが,いろいろな資料やhpを見る限り,上記ソースのように標準出力でできるはずだと思うのです・・・。 Windowsをサーバにした場合は,標準出力は表示されないのでしょうか? どなたか,アドバイスいただけないでしょうか。

    • ベストアンサー
    • CGI
  • LINUXでC言語のプログラミングについて

    私は、現在情報工学科の学生です。現在学校でLINUXの科目を受講しています。私は今まで、学校から出された課題は自分でやってきましたが、この問題だけはどうしても解けず、このような場を借りて、問題のプログラミングについて皆様にご教授をお願いしています。自分でいろいろ調べ、考えてみましたがそれでも自分の知識が足りず、プログラムを作ることができませんでした。プログラムと解説のご教授をお願いします。 OS Linux プログラミング言語 C言語 コンパイル方式 [gcc] *****問題***** #include <manにより調べること> void main(argc, char *argv[]){ int n, fd[2]; char line[MAXLINE]; pid_t pid; if (pipe(fd)<0) exit(1); if ((pid=fork())>0) { /*parent process */ close (fd[0]); write(fd[1], "Hello\n", 6); } else{ /*child process */ close (fd[1]); n = read(fd[0], line, MAXLINE); write (1, line, n);/* write(fileno(stdout), line,n); } else exit(1); /* fork error */ exit (0); } (問題1)上記をもとに親プロセスがキーボードから入力した行をパイプで子プロセスに標準出力ファイルとして送り、子プロセスは標準入力から受けとってスクリーンにエコーバックするようなプログラムを作れ。ヒント:dup2(fd[1],fileno(stdout)), fgets(line, MAXLINE, stdin), fputs(....) (親) (子) キーボード-->| stdin stdout| ---> |stdin stdout|---->ディスプレイ

  • 外部コマンドを使用しない標準出力の取得方法を教えて下さい

    外部コマンドを使用しない標準出力の取得方法を教えて下さい いつもお世話になっています。 javaのプログラム内で、その直前の標準出力を取得する方法がわかりません。「標準出力 取得」などで検索しても、外部プロセスがらみ(Runtime.getRuntime().exec(xxx)のprocessからストリームを取得など)の事ばかりがヒットしてしまいます。 やりたい事はもっと単純で、標準出力をするメソッドを呼び出した後に、そのメソッドが標準出力した内容を取得したいのです。 以下のコードのコメントの箇所の、具体的な実装方法を知りたいのです。この例では簡単のために、標準出力するメソッドを同一クラス内のメソッドとしていますが、本当は別のクラスのメソッドで、もちろん標準出力の内容は実行時までわかりません。 public class hello {   public static void main (String[] args) {     sub();     // sub()で標準出力した内容をここで取得したい!   }   private static void sub(){     System.out.println("Hello World !!");   } }

    • ベストアンサー
    • Java
  • プログラミングについて。

    0 … 標準入力 (write では使われない) 1 … 標準出力 2 … 標準エラー出力 3~ … ファイル(openの返り値) (openによって、この数字とファイルとが関連付けられます。 #というかopenは空いている番号とファイルを関連付けて #その値を返す関数です) 括弧の所が分かりません。教えていただけないでしょうか?すみません。 以下のURLの続きです。 https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12246178492 は、open で指定したファイルと、番号が対応する、っていうことです。 例えば、 int fd; fd = open("filename", O_RDONLY); としたときに、fd が 100 だったとしたら、今後、100番は、この filename というファイルを参照するための番号として使える、ということです。 例えば、read なら、 read(100, ...) のようにファイルに対応している番号100を書くことで、そのファイルからの読み取りができる、ということです。は、最初の例は、ファイルネーム100番からずっとそのfilenameというファイルを参照するという事でしょうか?で、次の例は、ファイル100を読み取るということでしょうか?教えていただけると助かります。すみません。という事で合っていますでしょうか?教えていただけると助かります。すみません。