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