openSSL コマンド ライン インターフェイスを使用してファイルを暗号化および復号化するための小さな GUI を作成しています。大きなファイルを暗号化/復号化するときに、暗号化の進行状況を表示するプログレス バーが必要です。私はcliインターフェイスを使用しているため、中間の戻り値やこれを支援する他のものはありません。そのため、進行状況を知る唯一の方法は、最初のスレッドがターミナルでopenSSLを呼び出すマルチスレッドプログラムを作成することです
例えば
system("openssl aes-256-cbc -in clear_text_file -out encrypted_file")
一方、2 番目のスレッドは毎秒出力ファイルのファイル サイズを読み取り、それを元のファイル サイズと比較して進行状況バーの値を計算します。ここでの問題は、スレッドの同期がないことです。そのため、PC がビジー状態の場合、2 番目のスレッドは毎秒実行されないことがよくありますが、最初のスレッドが終了するまで 5 つか 6 つまたは最悪の場合はまったく実行されず、結果は次のようになります。プログレス バーは、暗号化プロセスが終了するまで常にゼロのままです。また、最初のスレッドの優先度を低く設定しようとしましたが、変化が見られませんでした (Linux で Qt5.1 を使用していて、Linux でスレッドの優先度がサポートされていないことをどこかで読んだので、それが理由かもしれません)。
ここで誰かが同じ結果を達成するための他の(できればより良い)方法を私に提案できれば、私は非常に感謝しています..
前もって感謝します