我正在爲Mac OS 10.6.x/10.7.x編寫應用程序。在我的應用程序中,我想檢測到達最大打開文件描述符數量的軟限制的錯誤(由ulimit -n報告)。我確信應該有一個信號,但我無法找到它。有文件記錄的信號與CPU的軟限制和最大文件大小有關,但不適用於文件描述符。有誰知道該怎麼做?最大打開文件數的軟限制處理
在此先感謝。
我正在爲Mac OS 10.6.x/10.7.x編寫應用程序。在我的應用程序中,我想檢測到達最大打開文件描述符數量的軟限制的錯誤(由ulimit -n報告)。我確信應該有一個信號,但我無法找到它。有文件記錄的信號與CPU的軟限制和最大文件大小有關,但不適用於文件描述符。有誰知道該怎麼做?最大打開文件數的軟限制處理
在此先感謝。
打開文件時會出現錯誤(通過errno
);你不會得到一個信號。
int fd = open("somefile", O_CREAT);
if (fd < 0)
{
if (errno == EMFILE)
{
// Hit process file descriptor limit
}
else if (errno == ENFILE)
{
// Hit system file descriptor limit
}
}
getrlimit(RLIMIT_NOFILE);
似乎是你在找什麼。
我認爲當達到硬限制而不是軟限制時會發生錯誤。越過軟限制應該會對過程產生某種警告。 – Aarkan
@Aarkan這不是它的工作原理 - 與軟限制和硬限制的區別更多的是可以改變什麼;我所提供的代碼將在軟限制命中時發生。 – trojanfoe