4
パス上の各ファイル/ディレクトリを処理するために引数をftw()に送る方法はありますか?引数がグローバル変数として関連するのは、マルチスレッドの問題、つまりグローバルな値がすべてのスレッドに見えて間違っているために、少し難しいです。ftwへの引数の送信
パス上の各ファイル/ディレクトリを処理するために引数をftw()に送る方法はありますか?引数がグローバル変数として関連するのは、マルチスレッドの問題、つまりグローバルな値がすべてのスレッドに見えて間違っているために、少し難しいです。ftwへの引数の送信
適切に設計されたCコールバックインターフェイスには、周囲のコードから任意のデータをコールバックに渡すために使用できるvoid*
引数があります。 [n]ftw
にはそのような議論がないので、あなたはちょっとした川です。
コンパイラがスレッドローカル変数(__thread
記憶域指定子)をサポートしている場合は、それらをグローバルの代わりに使用できます。これはの作業ですが、実際にはグローバルよりはるかに丁寧です。
Cライブラリにfts
ファミリの機能がある場合は、その代わりに使用してください。それらは最新のUnix(Linux、OSX、最近* BSDを含む)やgnulib has a fallback implementationで利用できます。
ありがとう... ftsを試してみます –
'__thread'は非標準で移植性がありませんが、代わりに' pthread_key_create'と 'pthread_setspecific' /' pthread_getspecific'を使うことができます。 –