如果 _POSIX_VDISABLE 值为 -1 会怎样?

Nag*_*tri 5 posix

POSIX _POSIX_VDISABLE 值如果为-1,则所有终端设备文件都没有特殊字符的禁用字符;否则该值为禁用字符值。

请任何人帮助我理解这一点。我无法理解这句话的确切含义。

Von*_*onC 3

如果您查看特殊字符的定义,这应该意味着(三个“-1”值),所有这些特殊字符都是活动的:

在规范输入中,终端驱动程序识别许多执行各种控制功能的特殊字符。
其中包括用于编辑输入的ERASE字符(通常为DEL)以及其他编辑字符。用于发送信号的
INTR 字符(通常为Ctrl- )和其他发出信号的字符可以在规范或非规范输入模式下使用。cSIGINT

你有很多这样的特殊字符:


1997 年有人提出了这样的问题,看看这样的值是否可移植(总是可以编译):

2.9.4节的措辞:

如果表 2-11 中的任何常量在标头中被定义为值为 -1 ....

可以建议,在随意阅读时,使用如下代码来最小化大小并优化每个实现的效率:

#ifdef _POSIX_VDISABLE
#if    _POSIX_VDISABLE == -1
    /* code that assumes no vdisable capability */
#else
    /* code that assumes vdisable capability */
#endif
#else
    /* code that uses pathconf() to determine vdisable capability */
#endif
Run Code Online (Sandbox Code Playgroud)

解释#34表明它会的。

通过在编译时使用这些值,可移植的 POSIX.1 应用程序可以避免在定义符号时加载与表 2-11 中的符号关联的所有 pathconf() 相关代码。