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=stderr, 不知道 3 是什么意思 - 也许这是文件?我不知道它为什么要进行另一次读取,我假设 4096 的缓冲区大小是多少?我最好的猜测是,因为它说 = 0 因为它的 EOF ?

4

1 回答 1

2
  1. 字符数

  2. 您打开的文件。4096 是缓冲区大小。上次读取未能读取任何字节(0 字节)。

于 2012-10-05T17:11:05.710 回答