【发布时间】:2017-01-04 18:24:01
【问题描述】:
我是汇编初学者(使用 nasm)。我正在通过大学课程学习组装。
我试图了解 sys_read linux 系统调用在被调用时的行为。具体来说,sys_read 在读取新行或换行时停止。根据我被教导的内容,这是真的。这个online tutorial article 也证实了这一事实/主张。
当 sys_read 检测到换行时,控制权返回给程序,用户输入位于您在 ECX 中传递的内存地址。
我查看了 linux 程序员手册中的 sys_read 调用(通过“man 2 read”)。它没有提到应该提到的行为,对吧?
read() 尝试从文件描述符 fd 中读取 count 个字节 从 buf 开始进入缓冲区。
在支持查找的文件上,读取操作从 文件偏移量,文件偏移量按字节数递增 读。如果文件偏移量位于或超过文件末尾,则没有字节 读取,并且 read() 返回零。
如果 count 为零,read() 可能会检测到下面描述的错误。在 没有任何错误,或者如果 read() 不检查错误,则 计数为 0 的 read() 返回零并且没有其他效果。
如果 count 大于 SSIZE_MAX,则结果未指定。
所以我的问题是,为什么会发生这种行为?这是应该发生的Linux内核规范还是其他原因的结果?
【问题讨论】:
标签: linux assembly nasm system-calls tty