以下代碼段的 JNA 功能是否正確?在我看來,檢索值Resource.RLIMIT_NOFILE回傳的值Resource.RLIMIT_NPROC可能是一個錯誤?
代碼:
public interface CLibrary extends LibCAPI, Library {
CLibrary INSTANCE = Native.load("c", CLibrary.class);
}
public class Main {
public static void main(String[] args) {
final CLibrary INSTANCE = Native.load("c", CLibrary.class);
final Resource.Rlimit rlimit = new Resource.Rlimit();
INSTANCE.getrlimit(Resource.RLIMIT_NOFILE, rlimit);
System.out.println(rlimit.rlim_max);
System.out.println(rlimit.rlim_cur);
}
}
輸出:
8352
5568
輸出對應于maxprocess我的 macOS 12.6 的輸出,但我希望它是maxfiles.
? launchctl limit
cpu unlimited unlimited
filesize unlimited unlimited
data unlimited unlimited
stack 8388608 67104768
core 0 unlimited
rss unlimited unlimited
memlock unlimited unlimited
maxproc 5568 8352
maxfiles 256 unlimited
uj5u.com熱心網友回復:
您繼承的 JNA 類基于 Linux LibC,其中RLIMIT_NOFILE定義為 7:
# define RLIMIT_NOFILE 7 /* max number of open files */
雖然 Linux 和 macOS 上的 C 標頭之間有很多重疊,但 XNU 中的差異足以讓您始終單獨驗證 macOS 標頭。
在 macOS 上,這些常量顯然是不同的;您已經正確地注意到它在那里回傳 RLIMIT_NPROC,您應該使用 8。
#define RLIMIT_NPROC 7 /* number of processes */
#define RLIMIT_NOFILE 8 /* number of open files */
在 macOS 上,您可以考慮sysctl改用:
kern.maxfiles: 245760
kern.maxfilesperproc: 122880
kern.num_files: 8685
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/517830.html
標籤:爪哇苹果系统智商
上一篇:Mac終端符號分解
