Есть ли способ отправить сигнал из фоновой функции в bash родительскому процессу?Linux

Ответить
Anonymous
 Есть ли способ отправить сигнал из фоновой функции в bash родительскому процессу?

Сообщение Anonymous »

Я хочу несколько раз вызвать функцию (с различными аргументами) в качестве фонового процесса (задания?) в bash и использовать код завершения последней команды функции в результате ее работы. Вызывающая функция представляет собой тест с сетевыми запросами, и если один из этих тестов вернул ненулевое значение, результат основного сценария также должен быть отличным от нуля.
Это мой наивный подход, который не работать правильно:

Код: Выделить всё

#!/bin/bash

declare -i all_tests_res=0

declare -r PASSED=0
declare -r FAILED=1

# function to be run as background job
test_fn() {
slp_time=$(( RANDOM % 10 + 1 )) # tests have different duration
sleep "$slp_time" # long time running process imitations
if (( RANDOM % 2 == 0 )); then # even is success, odd is fail
kill -s USR1 "$PPID" # send signal to parent process by its PID
else
kill -s USR2 "$PPID" # send signal to parent process by its PID
fi
}

# function to set result of whole script to non null if there is one failed test
handler() {
local res=$1
if (( all_tests_res==0 && res==1 )); then
all_tests_res=1
fi
}

main() {
for (( i=0; i

Подробнее здесь: [url]https://stackoverflow.com/questions/79375497/is-there-a-way-to-send-signal-from-background-function-in-bash-to-parent-process[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»