gpt4 book ai didi

bash - POSIX 是否定义了向终端发送 NUL 时的行为?

转载 作者:行者123 更新时间:2023-11-29 09:12:53 25 4
gpt4 key购买 nike

这是一个将 ASCII NUL 作为输出发送的 Perl 程序:

print "hello\0world"

下面是如何从 shbash 运行这样的程序:

perl -e 'print "hello\0world"'

在 Mac OS X 10.11.2 上,这会产生可见的输出:

helloworld

但是,这种行为是否适用于所有符合 POSIX 标准的终端仿真器? (与例如将 NUL 打印为新行或崩溃相反?)

最佳答案

不,这不能保证;正如切普纳在对该问题的评论中指出的那样,POSIX 规范没有定义终端仿真器的行为。 确实存在一个标准的终端协议(protocol),ECMA-48 , 但现代操作系统统一支持标准定义的终端协议(protocol)之外的各种终端协议(protocol)。

一些终端打印本地字体为代码点提供的任何字符(U+0000 一个有效的代码点)。


顺便说一下,ECMA-48 终端标准(用于 ANSI 终端——同样,并非所有终端都要求符合 ANSI)对 NUL 字符有以下说明:

8.3.88 NUL - NULL
Notation: (C0) Representation: 00/00

NUL is used for media-fill or time-fill. NUL characters may be inserted into, or removed from, a data stream without affecting the information content of that stream, but such action may affect the information layout and/or the control of equipment.

因此,对于 ANSI 终端,为 NUL 打印空格是符合标准的操作(允许 NUL 用于填充缓冲区而不修改内容),但没有终端类型这样做不声称遵守 ECMA-48 要求以相同的方式行事。

关于bash - POSIX 是否定义了向终端发送 NUL 时的行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35508928/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com