現在VxWorksでコードを移植しています。私はシミュレータを使って変更を検証します。 このコードでは、多くのパイプとソケットを開く必要があります。私はこれらのファイル記述子のオープンに問題があります。確かに、私は17のファイル記述子(ソケットまたはパイプが同じエラーを引き起こす)を開くことができますが、次のエラー "EMFILE:開いているファイルが多すぎます"を返します。 ネットに関するいくつかの調査の後、グローバル変数NUM_FILESを変更しましたが、この変更は効果がありませんでした。 同時に開いているファイル記述子の数を制限するシミュレータであるかどうか知っていますか? VXWORKSシミュレータの制限?
は私も十分でないファイル記述子が使用可能であることに問題があったあなたの助け
1
A
答えて
2
私は私がRTP_FD_NUM_MAX を変更しなければならなかった問題
が、それははい、後に私は再コンパイルのだ値を変更し
1
いただきありがとうございます。 NUM_FILES
を50に設定すると問題が解決しました。この制限は、ファイルディスクリプタテーブルを静的に割り当てたVxWorksカーネル内で行われます。
私が知る限り、NUM_FILES
はカーネルの設定値であるため、カーネルの再コンパイルが必要です。あなたがロードされていない、さらにバイナリとたて始めたのVxWorksやタスクが開始されていることを行う場合
int countFreeFds(void)
{
int count = 0;
int i;
FILE *fd[100];
for (count = 0; count < 100; count++)
{
fd[count] = fopen("somefile", "r"); /* some any existing file */
if (fd[count] == NULL)
{
break;
}
}
for (i = (count - 1); i >= 0; i--)
{
fclose(fd[i]);
}
return (count);
}
:
あなたはシェルのVxWorks上で以下の機能をコンパイルして実行することにより、自由なファイル記述子の数を数えることができますcountFreeFds
によって返される値は、NUM_FILES
に近い数値を返します。
(私は数年前に使用したソースにアクセスできなかったので、上記の関数をテストしていないことにも注意してください...また、ソケットを使用するようにコードを変更することもできますパイプの代わりにそれは違いはありません無料のファイル記述子に関する)
関連する問題
- 1. クリック数の制限、制限、無効化
- 2. が無制限のメモリ制限
- 3. BigQueryのグループ制限を制限する
- 4. contenteditable divの上限制限
- 5. AndroidManifestの制限
- 6. ステージングサーバーの制限
- 7. Twitterの制限
- 8. フュージョンテーブルの制限
- 9. ファンクションタイプの制限
- 10. ジオコーダーの制限
- 11. EAGLViewの制限
- 12. MySQLの制限
- 13. ngAnimateSwapの制限
- 14. データベースクエリの制限
- 15. phpOCRの制限
- 16. ObjectMapperの制限
- 17. FusionTablesLayerの制限?
- 18. キューレートの制限
- 19. クロムワークスペースの制限
- 20. 制限
- 21. 制限
- 22. 制限
- 23. 制限
- 24. Rails 5 - 最初の制限と1の制限の比較
- 25. MySQLのダンプ制限? MySQL全体のデータベースサイズの制限?
- 26. SQLの制限の合計と制限の列
- 27. バッチput()の制限
- 28. iPadのメモリ制限
- 29. InfoPathフォームユーザーの制限
- 30. FirebaseのIP制限
ニース...知っておいてよかった! –