Почему ядро ​​Linux не отправляет Sigcont сначала, а затем SIGHUP в новую группу процессов на сиротю, содержащую остановленную процедуру?

С POSIX awk вы не можете этого сделать.

Назначение в форме -v назначение было определено как:

Операнд, который начинается с буквенного символа из переносимого набора символов (см. таблица в XBD Portable Character Set), за которой следует последовательность символов подчеркивания, цифр и алфавитов из переносимого набора символов, за которыми следует символ '=' , должны укажите присвоение переменной, а не имя пути. Символы перед '=' представляют имя переменной awk; если это имя является зарезервированным словом awk (см. Грамматику), поведение будет { {1}} undefined

Это разрешает только awk переменную имя .

Когда вы устанавливаете элемент массива awk с:

myarray[index]=value

myarray [index] is lvalue , а не имя переменной . Так что это незаконно.

Любые переменные и поля могут быть установлены с помощью:

lvalue = expression

с lvalue может быть переменными, массивом с индексом или селектором полей.

-2
26.12.2018, 22:13
1 ответ

Вы не только отвечаете на свой вопрос, ссылка, которую вы добавили в конце, также отвечает на ваш вопрос.

Когда процесс останавливается, вся обработка сигналов прекращается, за исключением SIGCONT и SIGKILL -, которые на практике обрабатываются операционной системой.

Это означает, что SIGHUP может быть обработан только после возобновления процесса, что происходит, когда SIGCONT получен и обработан, поэтому, даже если вы отправляете SIGHUP, за которым следует SIGCONT, они будут обрабатываться в обратном порядке.

Теперь, на практике, ядро, отправляющее SIGHUP раньше, приведет к меньшему количеству действий, выполняемых процессом между обработкой SIGCONT и обработкой SIGHUP, так как второй уже поставлен в очередь для обработки.

3
28.01.2020, 05:15

Теги

Похожие вопросы