の回答を待たずにプローブ要求を送信すると、選択したSSIDに対してプローブ要求(〜10ミリ秒ごとに)を定期的に送信する必要があります。私が取り組んでいるプロジェクトでC
は現在、私は次のコードでこれをやっている:
runQuietlyNonblocking
はフィニッシュに新しいスレッドを待たずにexecvpのフォークと引数でコマンドを実行します
char *args[] = {"iwlist", INTERFACE, "scan", "essid", ssid, (char *) NULL};
runQuietlyNonblocking(args);
。
しかし、iwlistスキャンはプローブの応答を待つので、新しいプローブ要求を作成するよりも時間がかかります。プローブ要求は送信されますが、約30分後に約10000スレッドが得られ、プログラムがメモリ不足でクラッシュします。
私はraspbian liteがインストールされたラズベリーパイに取り組んでいます。 応答を待たずにプローブ要求を送信するより良い方法はありますか?プローブ要求を手動で送信することも、iwlistに応答を検索しないように伝えることもできますか?
ありがとう、私はwpa_supplicantが速い場合に試してみます。 私の呼び出しがコマンド実行を待っていないので、システムまたはpopenで私は同じ問題を抱えています。 問題は、コマンド実行を待たなければならないということではありません。問題は、新しいスレッドのコマンド実行に、別のスレッドを開始するまでの時間よりも時間がかかることです。 –
@FreddyUnicornおそらく、問題は実際には「プローブ要求を送信するためのよりよい方法」ではなく、スレッド管理に関するものですか?最小限のプローブ要求間隔で規制を見たことは覚えていません。モジュール/ドライバ/インターフェイスツールに大きく依存しています。それらの高速要求が必要な場合でも、モジュール用の別のドライバを作成してみてください。それが助けにならない場合は、あなたのスレッドを保持する必要があると推測します。要求が終了してスレッドをきれいに結合するのを待ちます。 – metamorphling
@FreddyUnicornまた、私はiwlistスキャンに関する問題の私のシェアを持っています。私がしていたこと:10秒ごとにスレッドが生成され、iwlistスキャンと呼ばれ、後で閉じられました。それは4〜5時間完璧に働き、「トップ」では不要なプロセスはありませんでした。私は一晩のテストのために私のボードを去りました、そして、午前中に、iwlistがそれらの中に詰まった貝殻がたくさんありました。それは醜いです、私のドライバーは、間隔でバックグラウンドスキャンを設定するための特別なインターフェイスを持っていました(分は3秒でしたが、私はそれが大丈夫だったので10秒に1回必要でした)。あまり助けにはならない、ただの経験。 – metamorphling