clamAV 署名データベースを使用してウイルス スキャナーをコーディングするプロジェクトが必要です。速度を上げるために、スレッドを使用します。(コンボ & 待機) 私のコードのしくみ:
フォルダーとサブフォルダー内のすべてのファイルを読み取ります
function recursive_files()
{
files=$(find $folder_path -type f)
for f in $files
do
raw_and_scan "$f" &
done
wait
}
ご覧のとおり、各ファイルにはスレッドがあります。
function raw_and_scan()
{
raw_test_file $1
read_signature_db_by_line $1
}
Read_signature.. 署名データベースの各行を読み取ります
function read_signature_db_by_line()
{
cat $signature_path | (while read LINE ; do
stringtokenizer_line_db $LINE $1 $raw_file &
done
wait
) }
ご覧のとおり、DB の各行にはスレッドがあります。
大きなパフォーマンスが見られたので、ダブルスレッドの実装を行いました(時間ベンチマークを使用)
50行の50ファイルをDBにスキャンすると。それは正常に動作します。
しかし、ホーム フォルダ (800 個のファイル) をスキャンしても機能せず、さらに悪いことに、警告が表示され (もう fork() を実行できません)、コンピュータがフリーズします。再起動する必要があります。
5000タスクが動作するまでプロセス(htop)を監視します。
私のプロジェクトを提出できますhttps://github.com/peondusud/Bash.antivir
最後に、65000 行のデータベースを含むフォルダーをスキャンします。
スレッドなどを制限する考えがある場合。
ありがとう。