当用纯 C 编写安全代码时,我厌倦了用任意数字来表示限制——特别是为单行文本分配的最大内存量。我知道我总是可以说类似的话
#define MAX_LINE_LENGTH 1024
然后将该宏传递给诸如 snprintf() 之类的函数。
我在 NetBSD 中工作和编码,它有一个名为“user.line_max”的 sysctl(3) 变量,专门为此目的而设计。所以我不需要想出像上面的 MAX_LINE_LENGTH 这样的任意数字。我刚刚阅读了“user.line_max” sysctl 变量,顺便说一下,它可以由用户设置。
我的问题是,就安全性和便携性而言,这是否是正确的选择。也许不同的操作系统对此 sysctl 有不同的名称,但我更感兴趣的是我是否应该使用这种技术。
并且为了记录,在这种情况下,“可移植性”不包括 Microsoft Windows。