私はたくさんのソケット(約700ソケット)を作成しているソケットを持つPERLスクリプトを持っています。その後、system(...)
コマンドを使用して別のアプリケーションを起動します(800など)が開きますが、プロセスあたりのソケット数の制限は1024
なので、制限を超えて、予想されるデータを1024以上のソケット番号。子プロセスの不要なオープンソケット
は今、私の質問はこれです:
- システムコマンドを継承するには、すべてのオープン・ファイル記述子/ソケット起動したアプリケーションを作成していますか?
- 上記の質問に対する答えが「はい」の場合、起動したアプリケーションがファイル記述子を継承しないように別のアプリケーションを起動する方法がありますか?
- 2.答えが「いいえ」の場合、子プロセスのすべての継承されたファイル記述子を閉じる方法はありますか?
これはUNIXライクなシステムであると仮定して、ユーザごとのfd制限はいくらですか? – pilcrow
ユーザーあたりの制限はありますか?私はそれを知らなかった... プロセスごとの制限は1024に設定されているので(0〜1023は正常に動作し、1024は失敗する)... – mtahmed
私は、ユーザーのプロセスのリソース制限が、システム。 system()の直前に '$^F'を印刷できますか?あなたは 'system( 'ulimit -n; exec your_command ...')'現在の制限を見ることができますか? – pilcrow