2017-09-07 9 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、manページがそれを綴るないが:実際の数にulimitを設定した後

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

、プログラムは正常に実行され、正しい結果を返します。

関連する問題