1

私はCプログラムを書きました。(ページ下部の質問)実際のコードは提供できますが、この質問に答える必要はないと思います。

Used a while loop with fgets to get sizeof line
Assigned that fgets to line[255] in the fgets
Assigned the line to a char* (inside the loop)
Printf the char* (also inside the loop)

Cプログラムは期待どおりに出力します。

strace -o x.txt ./a.outを使用して、舞台裏で何が起こっているかを確認しました。

私はこれを見ます:(もちろん、私は理解していませんが、その上/下にもっと多くの文字化けがあります)

read(3, "text\nMore text\nEven more text"..., 4096) = 72
write(1, "text\n",5) = 5
... more of the write() = #
read(3, "", 4096) = 0
close(3)

質問:

  1. 私はそれを取得しますか、write(1=stdout, "text to print", #of char)それともこのバイト数ですか?

  2. わかりませんread(3, "", 4096) = 0

私は知っ0=stdinています1=stdout、、、2=stderr3が何を意味するのかわかりません-多分これはファイルですか?なぜ別の読み取りを行っているのかわかりませんが、バッファサイズは4096だと思いますか?私の最善の推測は、EOFのために= 0と言っているのでしょうか?

4

1 に答える 1

2
  1. 文字数

  2. 開いたファイル。4096はバッファサイズです。最後の読み取りでバイト(0バイト)の読み取りに失敗しました。

于 2012-10-05T17:11:05.710 に答える