Ответ 1
Вы можете использовать этот макрос autoconf, чтобы определить, существует ли какой-либо элемент struct flock
:
AC_CHECK_MEMBERS([struct flock.l_type],[],[],[[#include <fcntl.h>]])
Github имеет множество файлов autoconf, на которые вы можете посмотреть дополнительные идеи поиск "struct flock" в файлах *.ac.
Обновление: Проблема заказа struct flock
обсуждается в старой записи в списке debian-bugs.
Мы могли бы вдохнуть эту ошибку и сделать это в настройке:
AC_MSG_CHECKING("whether flock struct is linux ordered or not")
AC_TRY_RUN([
#include <fcntl.h>
struct flock lock = { 1, 2, 3, 4, 5 };
int main() { return lock.l_type==1 ? 0 : 1; }
], [
AC_DEFINE(HAVE_FLOCK_LINUX)
AC_MSG_RESULT("yes")
], AC_MSG_RESULT("no") )
Вы также можете выполнить эту проверку в своей программе во время выполнения, она не должна быть этапом настройки.