Когда вы пишете безопасный код в прямом C, я устал придумывать цифры , чтобы представлять ограничения - в частности, максимальное количество памяти для выделения одной строки текста. Я знаю, что всегда могу сказать вещи, какИспользование sysctl (3) для написания безопасного, портативного кода: хорошая идея?
#define MAX_LINE_LENGTH 1024
, а затем передать этот макрос к таким функциям, как snprintf().
Я работаю и кодируюсь в NetBSD, который имеет переменную sysctl (3), называемую «user.line_max», предназначенную для этой цели. Поэтому мне не нужно выходить с произвольным номером, например MAX_LINE_LENGTH. Я просто прочитал переменную sysctl «user.line_max» , которая, кстати, настраивается пользователем.
Мой вопрос заключается в том, является ли это правильной вещью с точки зрения безопасности и переносимостью. Возможно, разные операционные системы имеют другое имя для этого sysctl, но меня больше интересует, следует ли вообще использовать эту технику .
И для записи «переносимость» в данном случае исключает Microsoft Windows.
Ew, yuck. Хорошо знать. – christiank