2017-09-07 36 views
1

我試圖運行一個碼頭工人的容器,它開始--privileged內部下面的程序:由the sysconf man page如何在Docker容器中獲取最大數量的子進程?

[email protected]:~# cat > sysconf_test.c 
#include <unistd.h> 
#include <errno.h> 
#include <stdio.h> 

int main() { 
    long n = sysconf(_SC_CHILD_MAX); 
    printf("%ld %d\n", n, errno); 
    return 0; 
} 
[email protected]:~# gcc sysconf_test.c ; ./a.out 
-1 0 

去,「如果名稱對應的上限或下限,而上限是不確定的, -1被返回並且errno不被改變。「有沒有辦法讓它確定,可能是通過將選項傳遞給docker run命令?

+0

當你在主機上運行代碼時會發生什麼? –

+0

它爲主人提供了正確的價值;類似於'15934 0'(稍後我會用確切的值進行更新)。看起來像Docker容器中的ulimits有些奇怪。我現在意識到這個問題需要更多的信息,所以請等到我進一步研究它。 – Mihai

回答

0

我會回答我的問題:看來sysconf回報-1L爲「無限」,但該名男子頁面不拼出來:

[[email protected] ~]# ulimit -u 
120996 
[[email protected] ~]# docker run -ti debian /bin/bash 
[email protected]:/# ulimit -u 
unlimited 

ulimit設置爲一個實際的號碼後,該程序運行良好,並返回正確的結果。

相關問題