代码之家  ›  专栏  ›  技术社区  ›  Johan

在Ubuntu 10.04上编译时未声明路径_max

  •  5
  • Johan  · 技术社区  · 14 年前

    我试图在为8.04制作的Ubuntu10.04中编译一个C程序。因为我们用过 PATH_MAX 以及其他应在 limits.h . 根据各种资源,它应该是POSIX兼容C库的一部分。

    这是Ubuntu10.04中的一个bug,还是有合适的解决方法?

    1 回复  |  直到 14 年前
        1
  •  7
  •   R.. GitHub STOP HELPING ICE    14 年前

    POSIX将许多这样的限制定义为可选的。如果在 limits.h ,这意味着系统可能没有这样的限制,或者限制可能在运行时发生变化,或者取决于应用到的路径名。在这些情况下,使用 pathconf , fpathconf sysconf 功能和 _PC_* _SC_* 宏,如:

    path_max = pathconf("/", _PC_PATH_MAX);
    

    或:

    page_size = sysconf(_SC_PAGE_SIZE);
    

    不幸的是,GNU(GNU C库)将许多限制定义为运行时变量,而实际上它们在Linux上是恒定的,在某些情况下(在我看来,这是非常错误的),希望有一天这些限制将被删除,应用程序能够立即利用这些限制的删除。但是,对于应用程序和内核的健壮性来说,只要有足够大的固定限制(就像Linux限制一样),实际上就更好了。

    推荐文章