Создание большого количества подпроцессов является плохой вещью во внутреннем цикле. Создание того sleep
процесс в секунду в порядке. Нет ничего неправильно с
while ! test_condition; do
sleep 1
done
Если Вы действительно хотите избежать внешнего процесса, Вы не должны сохранять FIFO открытым.
my_tmpdir=$(mktemp -d)
trap 'rm -rf "$my_tmpdir"' 0
mkfifo "$my_tmpdir/f"
while ! test_condition; do
read -t 1 <>"$my_tmpdir/f"
done
Давайте посмотрим на определение области маршрута
в Linux
:
The scope of a route in Linux is an indicator of the distance to the
destination network.
Host
A route has host scope when it leads to a destination address on the local host.
Link
A route has link scope when it leads to a destination address on the local network.
Universe
A route has universe scope when it leads to addresses more than one hop away.
Итак, если вы измените область действия маршрута, ваш компьютер, вероятно, больше не может подключиться к сети на этом маршруте. Маршрутизатор просто не пересылает пакет, который отправляется в локальную сеть назначения.
Обратите внимание, что область действия не отражает различия между немаршрутизируемыми (частными) и маршрутизируемыми (общедоступными) адресами.
И 10.0.0.1 (частный - немаршрутизируемый), и 8.8.8.8 (общедоступный - маршрутизируемый) можно указать либо ссылку, либо юниверс (глобальный). Настраивается системным администратором.
Объем влияет на выбор адреса источника.
Для соединений / ассоциаций, в которых адрес источника еще не установлен (например, при инициировании TCP-соединения, но не при реакции на входящий пакет), адрес источника будет выбран в зависимости от объема маршрута, по которому пакет собирается. ударить.
Вот почему адреса также имеют атрибут области действия.
Пример, когда не происходит выбора адреса источника: на входящее инициирование TCP-соединения или пакет ping будет дан ответ с перевернутыми IP-адресами (источник → пункт назначения, пункт назначения → источник), в противном случае другой хост не распознает пакет как отвечать.
Пример выбора адреса источника: ping xyz
или telnet xyz
. Обычные программы не сообщают операционной системе, какой исходный адрес использовать (и это хорошая привычка). ОС должна выбрать один, и она готова сделать это: она проверяет потенциальный исходящий пакет для маршрута, по которому он попадет (обычная маршрутизация использует только адрес назначения, если вы используете расширенную маршрутизацию, у пакета еще не будет адреса источника! ). Результирующая область сокращает выбор до адресов из соответствующей области на исходящем интерфейсе, если таковые имеются.