我正在编写一个小型 GUI 来使用 openSSL 命令行界面加密和解密文件。我需要一个进度条来显示加密/解密大文件时的加密进度。由于我使用 cli 接口,因此没有中间返回值或其他帮助我的方法,所以我发现知道进度的唯一方法是编写一个多线程程序,其中第一个线程在终端中调用 openSSL
例如
system("openssl aes-256-cbc -in clear_text_file -out encrypted_file")
而第二个线程每秒读取输出文件的文件大小,并将其与原始文件大小进行比较来计算进度条值。这里的问题是没有线程同步,所以当 pc 忙时,第二个线程通常不是每秒执行一次,而是每隔五六个或更糟直到第一个线程结束才执行一次,结果是进度条始终保持为零,直到加密过程结束。我还尝试将第一个线程的优先级设置为低,但我注意到没有任何变化(我在 Linux 上使用 Qt5.1,我在某处读到不支持 Linux 中的线程优先级,所以这可能是原因)。
如果这里有人可以向我建议其他(最好是更好的)方法来获得相同的结果,我将非常感激..
先感谢您