Порядок выполнения двух (≥2) обработчиков сигналов, когда один прерывается другим?

Как я понял вопрос, я выбрал awk, используя хэш каждой записи, в этом случае я предполагаю, что RS = \ n, но его можно изменить, чтобы учесть любые другие виды договоренностей, вместо этого можно организовать учет четного числа повторений нечетного, с параметром или небольшим диалогом. Каждая строка используется как хэш, и ее счетчик увеличивается, в конце файла массив сканируется и печатает каждое четное количество записи. Я включаю счетчик для проверки, но для решения этой проблемы достаточно удалить [x].

HTH

countlines code

#!/usr/bin/nawk -f
{a[$0]++}
END{for (x in a) if (a[x]%2!=0) print x,a[x] }

Пример данных:

a
One Sunny Day
a
a
b
my best friend
my best friend
b
c
c
c
One Sunny Day
c
d
my best friend
my best friend
d
d
d
One Sunny Day
d
e
x
k
j
my best friend
my best friend

Пример выполнения:

countlines feed.txt
j 1
k 1
x 1
a 3
One Sunny Day 3
d 5
e 1
2
02.04.2019, 09:13
1 ответ

По умолчанию происходит сценарий 3. Однако вы можете предусмотреть блокировку SIGUSR2 при каждом запуске обработчика SIGUSR1, и, таким образом, у вас будет сценарий 1. Когда вы устанавливаете обработчик сигнала, вы можете указать, какие сигналы вы хотите заблокировать при запуске обработчика этого сигнала.

В качестве справки я бы рекомендовал вам прочитать справочные -страницы вашей операционной системы относительно сигналов. Например, в Linux вы можете начать с man 7 signal, а оттуда СМОТРИ ТАКЖЕ справочные страницы -.

Однако вы можете легко проверить поведение самостоятельно :просто создайте обработчик для SIGUSR1, который уходит в длительный сон (3)(в Linux лучше nanosleep (2 )потому что сон (3 )можно реализовать с помощью SIGALRM ), затем отправить сначала SIGUSR1, а затем SIGUSR2.

1
27.01.2020, 22:17

Теги

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