Не используйте /proc
, если доступны
любые другие источники получения информации, например,
setprogname(argv[0])
в
main()
и getprogname(3), в случае
если вы хотите <<знать своё имя>>.
Не полагайтесь на поведение, не регламентированное POSIX.
Не выполняйте запись временных меток в критических путях выполнения приложения, если можно обойтись без этого. Получение временных меток может быть медленным, в зависимости от степени точности используемых часов в операционной системе. Если временные метки действительно нужны, определите степень требуемой точности и используйте тот API, в котором документируется получение достаточной точности.
Ряд простых системных вызовов (например, gettimeofday(2), getpid(2)) работают намного быстрее в Linux(R) по сравнению с любой другой операционной системой из-за кеширования и используемой оптимизации vsyscall. Не полагайтесь на их дешевизну в критичных к производительности приложениях. В целом, старайтесь избегать системных вызовов там, где это возможно.
Не полагайтесь на специфичное для Linux(R) поведение сокета.
В частности, отличаются размеры буфера сокета по умолчанию
(выполните вызов setsockopt(2) с
SO_SNDBUF
и SO_RCVBUF
, и
в то время как в Linux(R) при заполнении буфера сокета
send(2) блокируется, FreeBSD возвращает ошибку и
устанавливает ENOBUFS
в качестве значения
errno.
Если требуется рассчитывать на нестандартное поведение, инкапсулируйте это должным образом в общий для всех API с проверкой поведения на этапе конфигурации, и если требуемое поведение не найдено, прекращайте выполнение.
Используйте страницы справочника для проверки, относится ли функция к интерфейсу POSIX (ищите раздел <<STANDARDS>> на странице справочника).
Не рассчитывайте на то, что в качестве
/bin/sh
используется
bash. Убедитесь, что командная
строка, переданная в system(3), будет работать в
POSIX-совместимой оболочке.
Список основных bash-измов расположен здесь.
Проверьте, что используемые заголовочные файлы включены в
POSIX или список, рекомендуемый страницей
справочника, т.к. например, забыть подключить
sys/types.h
- не такая уж проблема в
Linux(R), однако это не так во FreeBSD.
Компилируйте многопоточные приложения с ключом <<-pthread>>, а не <<-lpthread>> или как-либо ещё.
Этот, и другие документы, могут быть скачаны с https://download.freebsd.org/ftp/doc/.
По вопросам, связанным с FreeBSD, прочитайте
документацию прежде чем писать в
<questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите в рассылку
<doc@FreeBSD.org>.