如何在FreeBSD系统中增加MAX_PATH_LENGTH?

我正在写一个类似于“find”的工具来在基于freebsd的系统中search一些特定的文件。 FreeBSD 9中的stat()调用可以接受长度为1024个字符的path,尽pipelinux最多支持4K字符path。

系统本身有一个非FreeBSD(它是商业操作系统)的文件系统,该文件系统对MAX_PATH_LENGTH的限制很高。

如果某个用户在linux上挂载了一个卷,并且创build了一个path长度大于1K的目录层次结构,那么虽然文件系统支持它,但freeBSD lstat / stat调用将会失败。

有没有办法,或者我可以得到这个限制增加?

您应该可以通过在/usr/src/sys/sys/syslimits.h中加上PATH_MAX的值,并对整个系统(内核,库和任何使用PATH_MAX,MAXPATHLEN,或MAXINTERP)。 只要确保它保持在64K以下 。

如果你走这条路线,避免使用二进制包(如通过pkg,portmaster或portupgrade)。 坚持编译和安装/ usr / ports,你会没事的。