2012-05-15 22 views
1

我正在爲Mac OS 10.6.x/10.7.x編寫應用程序。在我的應用程序中,我想檢測到達最大打開文件描述符數量的軟限制的錯誤(由ulimit -n報告)。我確信應該有一個信號,但我無法找到它。有文件記錄的信號與CPU的軟限制和最大文件大小有關,但不適用於文件描述符。有誰知道該怎麼做?最大打開文件數的軟限制處理

在此先感謝。

回答

0

打開文件時會出現錯誤(通過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 
    } 
} 
+0

我認爲當達到硬限制而不是軟限制時會發生錯誤。越過軟限制應該會對過程產生某種警告。 – Aarkan

+0

@Aarkan這不是它的工作原理 - 與軟限制和硬限制的區別更多的是可以改變什麼;我所提供的代碼將在軟限制命中時發生。 – trojanfoe

0

getrlimit(RLIMIT_NOFILE);似乎是你在找什麼。