mirror of
https://github.com/tw93/Mole.git
synced 2026-02-04 18:34:46 +00:00
Improve the scanning speed
This commit is contained in:
@@ -553,19 +553,24 @@ run_with_timeout() {
|
||||
|
||||
"$@" &
|
||||
local cmd_pid=$!
|
||||
local elapsed=0
|
||||
while kill -0 "$cmd_pid" 2> /dev/null; do
|
||||
if [[ $elapsed -ge $duration ]]; then
|
||||
kill -TERM "$cmd_pid" 2> /dev/null || true
|
||||
sleep 1
|
||||
kill -KILL "$cmd_pid" 2> /dev/null || true
|
||||
wait "$cmd_pid" 2> /dev/null || true
|
||||
return 124
|
||||
fi
|
||||
sleep 1
|
||||
((elapsed++))
|
||||
done
|
||||
wait "$cmd_pid"
|
||||
|
||||
# More efficient wait: use wait with timeout in subshell
|
||||
(
|
||||
sleep "$duration" &
|
||||
local timer_pid=$!
|
||||
wait "$cmd_pid" 2>/dev/null && kill "$timer_pid" 2>/dev/null && exit 0
|
||||
kill -TERM "$cmd_pid" 2>/dev/null || true
|
||||
sleep 0.5
|
||||
kill -KILL "$cmd_pid" 2>/dev/null || true
|
||||
exit 124
|
||||
) &
|
||||
local watcher_pid=$!
|
||||
|
||||
wait "$cmd_pid" 2>/dev/null
|
||||
local exit_code=$?
|
||||
kill "$watcher_pid" 2>/dev/null || true
|
||||
wait "$watcher_pid" 2>/dev/null || true
|
||||
return $exit_code
|
||||
}
|
||||
|
||||
# Menu display helper
|
||||
|
||||
Reference in New Issue
Block a user