【问题标题】:why /dev/stdout is "1 [duplicate]为什么 /dev/stdout 是“1 [重复]
【发布时间】:2018-08-12 06:40:38
【问题描述】:
SEGMENT .data ; nothing here
SEGMENT .text ; sauce
global _start
_start:
            pop ECX ; get ARGC value
            mov EAX, 4 ; sys_write()
            mov EBX, 1 ; /dev/stdout
           ;^^^^^^^^^^^
            mov EDX, 1 ; a single byte
            int 0x80
            mov EAX, 1 ; sys_exit()
                    mov EBX, 0 ; return 0
            int 0x80
SEGMENT .bss ; nothing here

为什么 mov EBX, ""1"" ; /开发/标准输出? 我在哪里可以找到“1”的文件?

【问题讨论】:

  • ("在 C 中,stdin、stdout 和 stderr 是 FILE*,在 UNIX 中分别映射到文件描述符 0、1 和 2 ." - from this answer)
  • 这是对历史的一个很好的调查:来自维基百科的Standard streams。这篇文章追溯到 1950 年代并讨论了 Unix 设计,并解释了为什么流被标准化以及它们的价值。

标签: linux gcc


【解决方案1】:

在 unix 系统上,一个进程通常有 3 个公共 I/O 通道连接到它,称为 stdin/stdout/stderr。它们具有相应的文件描述符值 0、1 和 2。

这记录在:http://pubs.opengroup.org/onlinepubs/9699919799/functions/stdin.html(另见wikipedia page

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-28
    • 2012-05-17
    • 2017-11-30
    • 1970-01-01
    • 2016-05-20
    • 2011-07-19
    • 1970-01-01
    相关资源
    最近更新 更多