我正在编写一个'find'like utility来搜索基于freebsd的系统中的某些特定文件。 freeBSD 9中的stat()调用可以接受长度为1024个字符的路径,尽管linux支持最多4K字符路径。
系统本身有一个文件系统,而不是freeBSD(它是商业操作系统),文件系统对MAX_PATH_LENGTH有很高的限制。
如果某个用户在linux上安装了一个卷并创建了一个路径长度大于1K的目录层次结构,那么虽然文件系统会支持它,但freeBSD lstat / stat调用将失败。
有办法解决,还是可以以某种方式增加这个限制?
答案 0 :(得分:2)
您应该可以通过增加PATH_MAX in /usr/src/sys/sys/syslimits.h的值并对整个系统(内核,库以及使用PATH_MAX,MAXPATHLEN或MAXINTERP的任何已安装软件)进行完全重建来实现此目的。只需确保keep it under 64k。
如果你选择这条路线,请避免使用二进制包(例如通过pkg,portmaster或portupgrade)。坚持编译和安装/ usr / ports,你会没事的。